!function (a, d) {
    "object" == typeof module && "object" == typeof module.exports ? module.exports = a.document ? d(a, !0) : function (a) {
        if (!a.document)throw Error("jQuery requires a window with a document");
        return d(a)
    } : d(a)
}("undefined" != typeof window ? window : this, function (a, d) {
    function b(a) {
        var e = a.length, b = m.type(a);
        return "function" === b || m.isWindow(a) ? !1 : 1 === a.nodeType && e ? !0 : "array" === b || 0 === e || "number" == typeof e && 0 < e && e - 1 in a
    }

    function c(a, e, b) {
        if (m.isFunction(e))return m.grep(a, function (a, h) {
            return !!e.call(a, h,
                    a) !== b
        });
        if (e.nodeType)return m.grep(a, function (a) {
            return a === e !== b
        });
        if ("string" == typeof e) {
            if (lb.test(e))return m.filter(e, a, b);
            e = m.filter(e, a)
        }
        return m.grep(a, function (a) {
            return 0 <= V.call(e, a) !== b
        })
    }

    function f(a, e) {
        for (; (a = a[e]) && 1 !== a.nodeType;);
        return a
    }

    function k(a) {
        var e = Oa[a] = {};
        return m.each(a.match(ea) || [], function (a, b) {
            e[b] = !0
        }), e
    }

    function g() {
        C.removeEventListener("DOMContentLoaded", g, !1);
        a.removeEventListener("load", g, !1);
        m.ready()
    }

    function l() {
        Object.defineProperty(this.cache = {}, 0, {
            get: function () {
                return {}
            }
        });
        this.expando = m.expando + Math.random()
    }

    function n(a, e, b) {
        var h;
        if (void 0 === b && 1 === a.nodeType)if (h = "data-" + e.replace(mb, "-$1").toLowerCase(), b = a.getAttribute(h), "string" == typeof b) {
            try {
                b = "true" === b ? !0 : "false" === b ? !1 : "null" === b ? null : +b + "" === b ? +b : nb.test(b) ? m.parseJSON(b) : b
            } catch (c) {
            }
            U.set(a, e, b)
        } else b = void 0;
        return b
    }

    function q() {
        return !0
    }

    function t() {
        return !1
    }

    function v() {
        try {
            return C.activeElement
        } catch (a) {
        }
    }

    function e(a, e) {
        return m.nodeName(a, "table") && m.nodeName(11 !== e.nodeType ? e : e.firstChild, "tr") ?
        a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a
    }

    function h(a) {
        return a.type = (null !== a.getAttribute("type")) + "/" + a.type, a
    }

    function p(a) {
        var e = ob.exec(a.type);
        return e ? a.type = e[1] : a.removeAttribute("type"), a
    }

    function r(a, e) {
        for (var b = 0, h = a.length; h > b; b++)D.set(a[b], "globalEval", !e || D.get(e[b], "globalEval"))
    }

    function u(a, e) {
        var b, h, c, f, p, d;
        if (1 === e.nodeType) {
            if (D.hasData(a) && (b = D.access(a), h = D.set(e, b), d = b.events))for (c in delete h.handle, h.events = {}, d)for (b =
                                                                                                                                      0, h = d[c].length; h > b; b++)m.event.add(e, c, d[c][b]);
            U.hasData(a) && (f = U.access(a), p = m.extend({}, f), U.set(e, p))
        }
    }

    function G(a, e) {
        var b = a.getElementsByTagName ? a.getElementsByTagName(e || "*") : a.querySelectorAll ? a.querySelectorAll(e || "*") : [];
        return void 0 === e || e && m.nodeName(a, e) ? m.merge([a], b) : b
    }

    function B(e, b) {
        var h, c = m(b.createElement(e)).appendTo(b.body), f = a.getDefaultComputedStyle && (h = a.getDefaultComputedStyle(c[0])) ? h.display : m.css(c[0], "display");
        return c.detach(), f
    }

    function A(a) {
        var e = C, b = Pa[a];
        return b ||
        (b = B(a, e), "none" !== b && b || (na = (na || m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(e.documentElement), e = na[0].contentDocument, e.write(), e.close(), b = B(a, e), na.detach()), Pa[a] = b), b
    }

    function F(a, e, b) {
        var h, c, f, p, d = a.style;
        return b = b || wa(a), b && (p = b.getPropertyValue(e) || b[e]), b && ("" !== p || m.contains(a.ownerDocument, a) || (p = m.style(a, e)), Ga.test(p) && Qa.test(e) && (h = d.width, c = d.minWidth, f = d.maxWidth, d.minWidth = d.maxWidth = d.width = p, p = b.width, d.width = h, d.minWidth = c, d.maxWidth = f)), void 0 !== p ? p + "" :
            p
    }

    function J(a, e) {
        return {
            get: function () {
                return a() ? void delete this.get : (this.get = e).apply(this, arguments)
            }
        }
    }

    function aa(a, e) {
        if (e in a)return e;
        for (var b = e[0].toUpperCase() + e.slice(1), h = e, c = Ra.length; c--;)if (e = Ra[c] + b, e in a)return e;
        return h
    }

    function z(a, e, b) {
        return (a = qb.exec(e)) ? Math.max(0, a[1] - (b || 0)) + (a[2] || "px") : e
    }

    function R(a, e, b, h, c) {
        e = b === (h ? "border" : "content") ? 4 : "width" === e ? 1 : 0;
        for (var f = 0; 4 > e; e += 2)"margin" === b && (f += m.css(a, b + ja[e], !0, c)), h ? ("content" === b && (f -= m.css(a, "padding" + ja[e], !0,
            c)), "margin" !== b && (f -= m.css(a, "border" + ja[e] + "Width", !0, c))) : (f += m.css(a, "padding" + ja[e], !0, c), "padding" !== b && (f += m.css(a, "border" + ja[e] + "Width", !0, c)));
        return f
    }

    function I(a, e, b) {
        var h = !0, c = "width" === e ? a.offsetWidth : a.offsetHeight, f = wa(a), p = "border-box" === m.css(a, "boxSizing", !1, f);
        if (0 >= c || null == c) {
            if (c = F(a, e, f), (0 > c || null == c) && (c = a.style[e]), Ga.test(c))return c;
            h = p && (M.boxSizingReliable() || c === a.style[e]);
            c = parseFloat(c) || 0
        }
        return c + R(a, e, b || (p ? "border" : "content"), h, f) + "px"
    }

    function w(a, e) {
        for (var b,
                 h, c, f = [], p = 0, d = a.length; d > p; p++)h = a[p], h.style && (f[p] = D.get(h, "olddisplay"), b = h.style.display, e ? (f[p] || "none" !== b || (h.style.display = ""), "" === h.style.display && ra(h) && (f[p] = D.access(h, "olddisplay", A(h.nodeName)))) : (c = ra(h), "none" === b && c || D.set(h, "olddisplay", c ? b : m.css(h, "display"))));
        for (p = 0; d > p; p++)h = a[p], h.style && (e && "none" !== h.style.display && "" !== h.style.display || (h.style.display = e ? f[p] || "" : "none"));
        return a
    }

    function x(a, e, b, h, c) {
        return new x.prototype.init(a, e, b, h, c)
    }

    function H() {
        return setTimeout(function () {
            oa = void 0
        }), oa = m.now()
    }

    function K(a, e) {
        var b, h = 0, c = {height: a};
        for (e = e ? 1 : 0; 4 > h; h += 2 - e)b = ja[h], c["margin" + b] = c["padding" + b] = a;
        return e && (c.opacity = c.width = a), c
    }

    function Q(a, e, b) {
        for (var h, c = (sa[e] || []).concat(sa["*"]), f = 0, p = c.length; p > f; f++)if (h = c[f].call(b, e, a))return h
    }

    function W(a, e) {
        var b, h, c, f, p;
        for (b in a)if (h = m.camelCase(b), c = e[h], f = a[b], m.isArray(f) && (c = f[1], f = a[b] = f[0]), b !== h && (a[h] = f, delete a[b]), p = m.cssHooks[h], p && "expand" in p)for (b in f = p.expand(f), delete a[h], f)b in a || (a[b] = f[b], e[b] = c);
        else e[h] = c
    }

    function E(a, e, b) {
        var h, c = 0, f = za.length, p = m.Deferred().always(function () {
            delete d.elem
        }), d = function () {
            if (h)return !1;
            for (var e = oa || H(), e = Math.max(0, k.startTime + k.duration - e), b = 1 - (e / k.duration || 0), c = 0, f = k.tweens.length; f > c; c++)k.tweens[c].run(b);
            return p.notifyWith(a, [k, b, e]), 1 > b && f ? e : (p.resolveWith(a, [k]), !1)
        }, k = p.promise({
            elem: a,
            props: m.extend({}, e),
            opts: m.extend(!0, {specialEasing: {}}, b),
            originalProperties: e,
            originalOptions: b,
            startTime: oa || H(),
            duration: b.duration,
            tweens: [],
            createTween: function (e,
                                   b) {
                var h = m.Tween(a, k.opts, e, b, k.opts.specialEasing[e] || k.opts.easing);
                return k.tweens.push(h), h
            },
            stop: function (e) {
                var b = 0, c = e ? k.tweens.length : 0;
                if (h)return this;
                for (h = !0; c > b; b++)k.tweens[b].run(1);
                return e ? p.resolveWith(a, [k, e]) : p.rejectWith(a, [k, e]), this
            }
        });
        b = k.props;
        for (W(b, k.opts.specialEasing); f > c; c++)if (e = za[c].call(k, a, b, k.opts))return e;
        return m.map(b, Q, k), m.isFunction(k.opts.start) && k.opts.start.call(a, k), m.fx.timer(m.extend(d, {
            elem: a,
            anim: k,
            queue: k.opts.queue
        })), k.progress(k.opts.progress).done(k.opts.done,
            k.opts.complete).fail(k.opts.fail).always(k.opts.always)
    }

    function S(a) {
        return function (e, b) {
            "string" != typeof e && (b = e, e = "*");
            var h, c = 0, f = e.toLowerCase().match(ea) || [];
            if (m.isFunction(b))for (; h = f[c++];)"+" === h[0] ? (h = h.slice(1) || "*", (a[h] = a[h] || []).unshift(b)) : (a[h] = a[h] || []).push(b)
        }
    }

    function L(a, e, b, h) {
        function c(d) {
            var k;
            return f[d] = !0, m.each(a[d] || [], function (a, y) {
                var d = y(e, b, h);
                return "string" != typeof d || p || f[d] ? p ? !(k = d) : void 0 : (e.dataTypes.unshift(d), c(d), !1)
            }), k
        }

        var f = {}, p = a === Ha;
        return c(e.dataTypes[0]) ||
            !f["*"] && c("*")
    }

    function T(a, e) {
        var b, h, c = m.ajaxSettings.flatOptions || {};
        for (b in e)void 0 !== e[b] && ((c[b] ? a : h || (h = {}))[b] = e[b]);
        return h && m.extend(!0, a, h), a
    }

    function O(a, e, b, h) {
        var c;
        if (m.isArray(e))m.each(e, function (e, c) {
            b || rb.test(a) ? h(a, c) : O(a + "[" + ("object" == typeof c ? e : "") + "]", c, b, h)
        }); else if (b || "object" !== m.type(e))h(a, e); else for (c in e)O(a + "[" + c + "]", e[c], b, h)
    }

    function Y(a) {
        return m.isWindow(a) ? a : 9 === a.nodeType && a.defaultView
    }

    var Z = [], ba = Z.slice, da = Z.concat, ca = Z.push, V = Z.indexOf, P = {}, ta = P.toString,
        ka = P.hasOwnProperty, M = {}, C = a.document, m = function (a, e) {
            return new m.fn.init(a, e)
        }, Aa = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, Ia = /^-ms-/, xa = /-([\da-z])/gi, Ja = function (a, e) {
            return e.toUpperCase()
        };
    m.fn = m.prototype = {
        jquery: "2.1.1", constructor: m, selector: "", length: 0, toArray: function () {
            return ba.call(this)
        }, get: function (a) {
            return null != a ? 0 > a ? this[a + this.length] : this[a] : ba.call(this)
        }, pushStack: function (a) {
            a = m.merge(this.constructor(), a);
            return a.prevObject = this, a.context = this.context, a
        }, each: function (a, e) {
            return m.each(this,
                a, e)
        }, map: function (a) {
            return this.pushStack(m.map(this, function (e, b) {
                return a.call(e, b, e)
            }))
        }, slice: function () {
            return this.pushStack(ba.apply(this, arguments))
        }, first: function () {
            return this.eq(0)
        }, last: function () {
            return this.eq(-1)
        }, eq: function (a) {
            var e = this.length;
            a = +a + (0 > a ? e : 0);
            return this.pushStack(0 <= a && e > a ? [this[a]] : [])
        }, end: function () {
            return this.prevObject || this.constructor(null)
        }, push: ca, sort: Z.sort, splice: Z.splice
    };
    m.extend = m.fn.extend = function () {
        var a, e, b, h, c, f, p = arguments[0] || {}, d = 1, k = arguments.length,
            g = !1;
        "boolean" == typeof p && (g = p, p = arguments[d] || {}, d++);
        "object" == typeof p || m.isFunction(p) || (p = {});
        for (d === k && (p = this, d--); k > d; d++)if (null != (a = arguments[d]))for (e in a)b = p[e], h = a[e], p !== h && (g && h && (m.isPlainObject(h) || (c = m.isArray(h))) ? (c ? (c = !1, f = b && m.isArray(b) ? b : []) : f = b && m.isPlainObject(b) ? b : {}, p[e] = m.extend(g, f, h)) : void 0 !== h && (p[e] = h));
        return p
    };
    m.extend({
        expando: "jQuery" + ("2.1.1" + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (a) {
            throw Error(a);
        }, noop: function () {
        }, isFunction: function (a) {
            return "function" ===
                m.type(a)
        }, isArray: Array.isArray, isWindow: function (a) {
            return null != a && a === a.window
        }, isNumeric: function (a) {
            return !m.isArray(a) && 0 <= a - parseFloat(a)
        }, isPlainObject: function (a) {
            return "object" !== m.type(a) || a.nodeType || m.isWindow(a) ? !1 : a.constructor && !ka.call(a.constructor.prototype, "isPrototypeOf") ? !1 : !0
        }, isEmptyObject: function (a) {
            for (var e in a)return !1;
            return !0
        }, type: function (a) {
            return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? P[ta.call(a)] || "object" : typeof a
        }, globalEval: function (a) {
            var e,
                b = eval;
            (a = m.trim(a)) && (1 === a.indexOf("use strict") ? (e = C.createElement("script"), e.text = a, C.head.appendChild(e).parentNode.removeChild(e)) : b(a))
        }, camelCase: function (a) {
            return a.replace(Ia, "ms-").replace(xa, Ja)
        }, nodeName: function (a, e) {
            return a.nodeName && a.nodeName.toLowerCase() === e.toLowerCase()
        }, each: function (a, e, h) {
            var c, f = 0, p = a.length, d = b(a);
            if (h)if (d)for (; p > f && (c = e.apply(a[f], h), !1 !== c); f++); else for (f in a) {
                if (c = e.apply(a[f], h), !1 === c)break
            } else if (d)for (; p > f && (c = e.call(a[f], f, a[f]), !1 !== c); f++);
            else for (f in a)if (c = e.call(a[f], f, a[f]), !1 === c)break;
            return a
        }, trim: function (a) {
            return null == a ? "" : (a + "").replace(Aa, "")
        }, makeArray: function (a, e) {
            var h = e || [];
            return null != a && (b(Object(a)) ? m.merge(h, "string" == typeof a ? [a] : a) : ca.call(h, a)), h
        }, inArray: function (a, e, b) {
            return null == e ? -1 : V.call(e, a, b)
        }, merge: function (a, e) {
            for (var b = +e.length, h = 0, c = a.length; b > h; h++)a[c++] = e[h];
            return a.length = c, a
        }, grep: function (a, e, b) {
            for (var h = [], c = 0, f = a.length, p = !b; f > c; c++)b = !e(a[c], c), b !== p && h.push(a[c]);
            return h
        }, map: function (a,
                          e, h) {
            var c, f = 0, p = a.length, d = [];
            if (b(a))for (; p > f; f++)c = e(a[f], f, h), null != c && d.push(c); else for (f in a)c = e(a[f], f, h), null != c && d.push(c);
            return da.apply([], d)
        }, guid: 1, proxy: function (a, e) {
            var b, h, c;
            return "string" == typeof e && (b = a[e], e = a, a = b), m.isFunction(a) ? (h = ba.call(arguments, 2), c = function () {
                return a.apply(e || this, h.concat(ba.call(arguments)))
            }, c.guid = a.guid = a.guid || m.guid++, c) : void 0
        }, now: Date.now, support: M
    });
    m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (a,
                                                                                                 e) {
        P["[object " + e + "]"] = e.toLowerCase()
    });
    var la = function (a) {
        function e(a, b, h, c) {
            var f, p, d, y, k;
            if ((b ? b.ownerDocument || b : D) !== O && z(b), b = b || O, h = h || [], !a || "string" != typeof a)return h;
            if (1 !== (y = b.nodeType) && 9 !== y)return [];
            if (Y && !c) {
                if (f = ua.exec(a))if (d = f[1])if (9 === y) {
                    if (p = b.getElementById(d), !p || !p.parentNode)return h;
                    if (p.id === d)return h.push(p), h
                } else {
                    if (b.ownerDocument && (p = b.ownerDocument.getElementById(d)) && Z(b, p) && p.id === d)return h.push(p), h
                } else {
                    if (f[2])return U.apply(h, b.getElementsByTagName(a)),
                        h;
                    if ((d = f[3]) && B.getElementsByClassName && b.getElementsByClassName)return U.apply(h, b.getElementsByClassName(d)), h
                }
                if (B.qsa && (!W || !W.test(a))) {
                    if (p = f = C, d = b, k = 9 === y && a, 1 === y && "object" !== b.nodeName.toLowerCase()) {
                        y = F(a);
                        (f = b.getAttribute("id")) ? p = f.replace(wa, "\\$&") : b.setAttribute("id", p);
                        p = "[id='" + p + "'] ";
                        for (d = y.length; d--;)y[d] = p + m(y[d]);
                        d = na.test(a) && l(b.parentNode) || b;
                        k = y.join(",")
                    }
                    if (k)try {
                        return U.apply(h, d.querySelectorAll(k)), h
                    } catch (g) {
                    } finally {
                        f || b.removeAttribute("id")
                    }
                }
            }
            return T(a.replace(fa,
                "$1"), b, h, c)
        }

        function b() {
            function a(b, h) {
                return e.push(b + " ") > w.cacheLength && delete a[e.shift()], a[b + " "] = h
            }

            var e = [];
            return a
        }

        function h(a) {
            return a[C] = !0, a
        }

        function c(a) {
            var e = O.createElement("div");
            try {
                return !!a(e)
            } catch (b) {
                return !1
            } finally {
                e.parentNode && e.parentNode.removeChild(e)
            }
        }

        function f(a, e) {
            for (var b = a.split("|"), h = a.length; h--;)w.attrHandle[b[h]] = e
        }

        function p(a, e) {
            var b = e && a, h = b && 1 === a.nodeType && 1 === e.nodeType && (~e.sourceIndex || -2147483648) - (~a.sourceIndex || -2147483648);
            if (h)return h;
            if (b)for (; b = b.nextSibling;)if (b === e)return -1;
            return a ? 1 : -1
        }

        function d(a) {
            return function (e) {
                return "input" === e.nodeName.toLowerCase() && e.type === a
            }
        }

        function k(a) {
            return function (e) {
                var b = e.nodeName.toLowerCase();
                return ("input" === b || "button" === b) && e.type === a
            }
        }

        function g(a) {
            return h(function (e) {
                return e = +e, h(function (b, h) {
                    for (var c, f = a([], b.length, e), p = f.length; p--;)b[c = f[p]] && (b[c] = !(h[c] = b[c]))
                })
            })
        }

        function l(a) {
            return a && "undefined" !== typeof a.getElementsByTagName && a
        }

        function r() {
        }

        function m(a) {
            for (var e =
                0, b = a.length, h = ""; b > e; e++)h += a[e].value;
            return h
        }

        function u(a, e, b) {
            var h = e.dir, c = b && "parentNode" === h, f = P++;
            return e.first ? function (e, b, f) {
                for (; e = e[h];)if (1 === e.nodeType || c)return a(e, b, f)
            } : function (e, b, p) {
                var d, y, k = [S, f];
                if (p)for (; e = e[h];) {
                    if ((1 === e.nodeType || c) && a(e, b, p))return !0
                } else for (; e = e[h];)if (1 === e.nodeType || c) {
                    if (y = e[C] || (e[C] = {}), (d = y[h]) && d[0] === S && d[1] === f)return k[2] = d[2];
                    if (y[h] = k, k[2] = a(e, b, p))return !0
                }
            }
        }

        function n(a) {
            return 1 < a.length ? function (e, b, h) {
                for (var c = a.length; c--;)if (!a[c](e,
                        b, h))return !1;
                return !0
            } : a[0]
        }

        function q(a, e, b, h, c) {
            for (var f, p = [], d = 0, y = a.length, k = null != e; y > d; d++)(f = a[d]) && (!b || b(f, h, c)) && (p.push(f), k && e.push(d));
            return p
        }

        function t(a, b, c, f, p, d) {
            return f && !f[C] && (f = t(f)), p && !p[C] && (p = t(p, d)), h(function (h, d, y, k) {
                var g, l, r = [], m = [], u = d.length, n;
                if (!(n = h)) {
                    n = b || "*";
                    for (var N = y.nodeType ? [y] : y, ya = [], va = 0, t = N.length; t > va; va++)e(n, N[va], ya);
                    n = ya
                }
                n = !a || !h && b ? n : q(n, r, a, y, k);
                N = c ? p || (h ? a : u || f) ? [] : d : n;
                if (c && c(n, N, y, k), f)for (g = q(N, m), f(g, [], y, k), y = g.length; y--;)(l = g[y]) &&
                (N[m[y]] = !(n[m[y]] = l));
                if (h) {
                    if (p || a) {
                        if (p) {
                            g = [];
                            for (y = N.length; y--;)(l = N[y]) && g.push(n[y] = l);
                            p(null, N = [], g, k)
                        }
                        for (y = N.length; y--;)(l = N[y]) && -1 < (g = p ? X.call(h, l) : r[y]) && (h[g] = !(d[g] = l))
                    }
                } else N = q(N === d ? N.splice(u, N.length) : N), p ? p(null, d, N, k) : U.apply(d, N)
            })
        }

        function G(a) {
            var e, b, h, c = a.length, f = w.relative[a[0].type];
            b = f || w.relative[" "];
            for (var p = f ? 1 : 0, d = u(function (a) {
                return a === e
            }, b, !0), y = u(function (a) {
                return -1 < X.call(e, a)
            }, b, !0), k = [function (a, b, h) {
                return !f && (h || b !== H) || ((e = b).nodeType ? d(a, b, h) : y(a,
                        b, h))
            }]; c > p; p++)if (b = w.relative[a[p].type])k = [u(n(k), b)]; else {
                if (b = w.filter[a[p].type].apply(null, a[p].matches), b[C]) {
                    for (h = ++p; c > h && !w.relative[a[h].type]; h++);
                    return t(1 < p && n(k), 1 < p && m(a.slice(0, p - 1).concat({value: " " === a[p - 2].type ? "*" : ""})).replace(fa, "$1"), b, h > p && G(a.slice(p, h)), c > h && G(a = a.slice(h)), c > h && m(a))
                }
                k.push(b)
            }
            return n(k)
        }

        function v(a, b) {
            var c = 0 < b.length, f = 0 < a.length, p = function (h, p, d, y, k) {
                var g, l, r, m = 0, u = "0", n = h && [], N = [], ya = H, va = h || f && w.find.TAG("*", k), t = S += null == ya ? 1 : Math.random() ||
                .1, pb = va.length;
                for (k && (H = p !== O && p); u !== pb && null != (g = va[u]); u++) {
                    if (f && g) {
                        for (l = 0; r = a[l++];)if (r(g, p, d)) {
                            y.push(g);
                            break
                        }
                        k && (S = t)
                    }
                    c && ((g = !r && g) && m--, h && n.push(g))
                }
                if (m += u, c && u !== m) {
                    for (l = 0; r = b[l++];)r(n, N, p, d);
                    if (h) {
                        if (0 < m)for (; u--;)n[u] || N[u] || (N[u] = ka.call(y));
                        N = q(N)
                    }
                    U.apply(y, N);
                    k && !h && 0 < N.length && 1 < m + b.length && e.uniqueSort(y)
                }
                return k && (S = t, H = ya), n
            };
            return c ? h(p) : p
        }

        var A, B, w, L, x, F, J, T, H, aa, K, z, O, E, Y, W, Q, I, Z, C = "sizzle" + -new Date, D = a.document, S = 0, P = 0, R = b(), ba = b(), M = b(), da = function (a, e) {
                return a ===
                e && (K = !0), 0
            }, ca = {}.hasOwnProperty, V = [], ka = V.pop, ta = V.push, U = V.push, la = V.slice, X = V.indexOf || function (a) {
                    for (var e = 0, b = this.length; b > e; e++)if (this[e] === a)return e;
                    return -1
                }, ea = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+".replace("w", "w#"), Aa = "\\[[\\x20\\t\\r\\n\\f]*((?:\\\\.|[\\w-]|[^\\x00-\\xa0])+)(?:[\\x20\\t\\r\\n\\f]*([*^$|!~]?=)[\\x20\\t\\r\\n\\f]*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + ea + "))|)[\\x20\\t\\r\\n\\f]*\\]", ga = ":((?:\\\\.|[\\w-]|[^\\x00-\\xa0])+)(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" +
                Aa + ")*)|.*)\\)|)", fa = RegExp("^[\\x20\\t\\r\\n\\f]+|((?:^|[^\\\\])(?:\\\\.)*)[\\x20\\t\\r\\n\\f]+$", "g"), ja = /^[\x20\t\r\n\f]*,[\x20\t\r\n\f]*/, Ja = /^[\x20\t\r\n\f]*([>+~]|[\x20\t\r\n\f])[\x20\t\r\n\f]*/, ma = RegExp("=[\\x20\\t\\r\\n\\f]*([^\\]'\"]*?)[\\x20\\t\\r\\n\\f]*\\]", "g"), oa = new RegExp(ga), Ia = new RegExp("^" + ea + "$"), xa = {
                ID: /^#((?:\\.|[\w-]|[^\x00-\xa0])+)/,
                CLASS: /^\.((?:\\.|[\w-]|[^\x00-\xa0])+)/,
                TAG: new RegExp("^(" + "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+".replace("w", "w*") + ")"),
                ATTR: new RegExp("^" + Aa),
                PSEUDO: new RegExp("^" + ga),
                CHILD: /^:(only|first|last|nth|nth-last)-(child|of-type)(?:\([\x20\t\r\n\f]*(even|odd|(([+-]|)(\d*)n|)[\x20\t\r\n\f]*(?:([+-]|)[\x20\t\r\n\f]*(\d+)|))[\x20\t\r\n\f]*\)|)/i,
                bool: /^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,
                needsContext: /^[\x20\t\r\n\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i
            }, ra = /^(?:input|select|textarea|button)$/i,
            sa = /^h\d$/i, ia = /^[^{]+\{\s*\[native \w/, ua = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, na = /[+~]/, wa = /'|\\/g, pa = RegExp("\\\\([\\da-f]{1,6}[\\x20\\t\\r\\n\\f]?|([\\x20\\t\\r\\n\\f])|.)", "ig"), qa = function (a, e, b) {
                a = "0x" + e - 65536;
                return a !== a || b ? e : 0 > a ? String.fromCharCode(a + 65536) : String.fromCharCode(a >> 10 | 55296, 1023 & a | 56320)
            };
        try {
            U.apply(V = la.call(D.childNodes), D.childNodes), V[D.childNodes.length].nodeType
        } catch (za) {
            U = {
                apply: V.length ? function (a, e) {
                    ta.apply(a, la.call(e))
                } : function (a, e) {
                    for (var b = a.length, h = 0; a[b++] =
                        e[h++];);
                    a.length = b - 1
                }
            }
        }
        B = e.support = {};
        x = e.isXML = function (a) {
            return (a = a && (a.ownerDocument || a).documentElement) ? "HTML" !== a.nodeName : !1
        };
        z = e.setDocument = function (a) {
            var e, b = a ? a.ownerDocument || a : D;
            a = b.defaultView;
            return b !== O && 9 === b.nodeType && b.documentElement ? (O = b, E = b.documentElement, Y = !x(b), a && a !== a.top && (a.addEventListener ? a.addEventListener("unload", function () {
                z()
            }, !1) : a.attachEvent && a.attachEvent("onunload", function () {
                z()
            })), B.attributes = c(function (a) {
                return a.className = "i", !a.getAttribute("className")
            }),
                B.getElementsByTagName = c(function (a) {
                    return a.appendChild(b.createComment("")), !a.getElementsByTagName("*").length
                }), B.getElementsByClassName = ia.test(b.getElementsByClassName) && c(function (a) {
                    return a.innerHTML = "<div class='a'></div><div class='a i'></div>", a.firstChild.className = "i", 2 === a.getElementsByClassName("i").length
                }), B.getById = c(function (a) {
                return E.appendChild(a).id = C, !b.getElementsByName || !b.getElementsByName(C).length
            }), B.getById ? (w.find.ID = function (a, e) {
                if ("undefined" !== typeof e.getElementById &&
                    Y) {
                    var b = e.getElementById(a);
                    return b && b.parentNode ? [b] : []
                }
            }, w.filter.ID = function (a) {
                var e = a.replace(pa, qa);
                return function (a) {
                    return a.getAttribute("id") === e
                }
            }) : (delete w.find.ID, w.filter.ID = function (a) {
                var e = a.replace(pa, qa);
                return function (a) {
                    return (a = "undefined" !== typeof a.getAttributeNode && a.getAttributeNode("id")) && a.value === e
                }
            }), w.find.TAG = B.getElementsByTagName ? function (a, e) {
                return "undefined" !== typeof e.getElementsByTagName ? e.getElementsByTagName(a) : void 0
            } : function (a, e) {
                var b, h = [], c = 0, f =
                    e.getElementsByTagName(a);
                if ("*" === a) {
                    for (; b = f[c++];)1 === b.nodeType && h.push(b);
                    return h
                }
                return f
            }, w.find.CLASS = B.getElementsByClassName && function (a, e) {
                    return "undefined" !== typeof e.getElementsByClassName && Y ? e.getElementsByClassName(a) : void 0
                }, Q = [], W = [], (B.qsa = ia.test(b.querySelectorAll)) && (c(function (a) {
                a.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
                a.querySelectorAll("[msallowclip^='']").length && W.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")");
                a.querySelectorAll("[selected]").length ||
                W.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)");
                a.querySelectorAll(":checked").length || W.push(":checked")
            }), c(function (a) {
                var e = b.createElement("input");
                e.setAttribute("type", "hidden");
                a.appendChild(e).setAttribute("name", "D");
                a.querySelectorAll("[name=d]").length && W.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?=");
                a.querySelectorAll(":enabled").length || W.push(":enabled", ":disabled");
                a.querySelectorAll("*,:x");
                W.push(",.*:")
            })), (B.matchesSelector = ia.test(I = E.matches || E.webkitMatchesSelector || E.mozMatchesSelector || E.oMatchesSelector || E.msMatchesSelector)) && c(function (a) {
                B.disconnectedMatch = I.call(a, "div");
                I.call(a, "[s!='']:x");
                Q.push("!=", ga)
            }), W = W.length && new RegExp(W.join("|")), Q = Q.length && new RegExp(Q.join("|")), e = ia.test(E.compareDocumentPosition), Z = e || ia.test(E.contains) ? function (a, e) {
                var b = 9 === a.nodeType ? a.documentElement : a, h = e && e.parentNode;
                return a === h || !(!h || 1 !== h.nodeType || !(b.contains ? b.contains(h) :
                    a.compareDocumentPosition && 16 & a.compareDocumentPosition(h)))
            } : function (a, e) {
                if (e)for (; e = e.parentNode;)if (e === a)return !0;
                return !1
            }, da = e ? function (a, e) {
                if (a === e)return K = !0, 0;
                var h = !a.compareDocumentPosition - !e.compareDocumentPosition;
                return h ? h : (h = (a.ownerDocument || a) === (e.ownerDocument || e) ? a.compareDocumentPosition(e) : 1, 1 & h || !B.sortDetached && e.compareDocumentPosition(a) === h ? a === b || a.ownerDocument === D && Z(D, a) ? -1 : e === b || e.ownerDocument === D && Z(D, e) ? 1 : aa ? X.call(aa, a) - X.call(aa, e) : 0 : 4 & h ? -1 : 1)
            } : function (a,
                          e) {
                if (a === e)return K = !0, 0;
                var h, c = 0;
                h = a.parentNode;
                var f = e.parentNode, d = [a], y = [e];
                if (!h || !f)return a === b ? -1 : e === b ? 1 : h ? -1 : f ? 1 : aa ? X.call(aa, a) - X.call(aa, e) : 0;
                if (h === f)return p(a, e);
                for (h = a; h = h.parentNode;)d.unshift(h);
                for (h = e; h = h.parentNode;)y.unshift(h);
                for (; d[c] === y[c];)c++;
                return c ? p(d[c], y[c]) : d[c] === D ? -1 : y[c] === D ? 1 : 0
            }, b) : O
        };
        e.matches = function (a, b) {
            return e(a, null, null, b)
        };
        e.matchesSelector = function (a, b) {
            if ((a.ownerDocument || a) !== O && z(a), b = b.replace(ma, "='$1']"), !(!B.matchesSelector || !Y || Q && Q.test(b) ||
                W && W.test(b)))try {
                var h = I.call(a, b);
                if (h || B.disconnectedMatch || a.document && 11 !== a.document.nodeType)return h
            } catch (c) {
            }
            return 0 < e(b, O, null, [a]).length
        };
        e.contains = function (a, e) {
            return (a.ownerDocument || a) !== O && z(a), Z(a, e)
        };
        e.attr = function (a, e) {
            (a.ownerDocument || a) !== O && z(a);
            var b = w.attrHandle[e.toLowerCase()], b = b && ca.call(w.attrHandle, e.toLowerCase()) ? b(a, e, !Y) : void 0;
            return void 0 !== b ? b : B.attributes || !Y ? a.getAttribute(e) : (b = a.getAttributeNode(e)) && b.specified ? b.value : null
        };
        e.error = function (a) {
            throw Error("Syntax error, unrecognized expression: " +
                a);
        };
        e.uniqueSort = function (a) {
            var e, b = [], h = 0, c = 0;
            if (K = !B.detectDuplicates, aa = !B.sortStable && a.slice(0), a.sort(da), K) {
                for (; e = a[c++];)e === a[c] && (h = b.push(c));
                for (; h--;)a.splice(b[h], 1)
            }
            return aa = null, a
        };
        L = e.getText = function (a) {
            var e, b = "", h = 0;
            if (e = a.nodeType)if (1 === e || 9 === e || 11 === e) {
                if ("string" == typeof a.textContent)return a.textContent;
                for (a = a.firstChild; a; a = a.nextSibling)b += L(a)
            } else {
                if (3 === e || 4 === e)return a.nodeValue
            } else for (; e = a[h++];)b += L(e);
            return b
        };
        w = e.selectors = {
            cacheLength: 50,
            createPseudo: h,
            match: xa,
            attrHandle: {},
            find: {},
            relative: {
                ">": {dir: "parentNode", first: !0},
                " ": {dir: "parentNode"},
                "+": {dir: "previousSibling", first: !0},
                "~": {dir: "previousSibling"}
            },
            preFilter: {
                ATTR: function (a) {
                    return a[1] = a[1].replace(pa, qa), a[3] = (a[3] || a[4] || a[5] || "").replace(pa, qa), "~=" === a[2] && (a[3] = " " + a[3] + " "), a.slice(0, 4)
                }, CHILD: function (a) {
                    return a[1] = a[1].toLowerCase(), "nth" === a[1].slice(0, 3) ? (a[3] || e.error(a[0]), a[4] = +(a[4] ? a[5] + (a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3])), a[5] = +(a[7] + a[8] || "odd" === a[3])) : a[3] &&
                    e.error(a[0]), a
                }, PSEUDO: function (a) {
                    var e, b = !a[6] && a[2];
                    return xa.CHILD.test(a[0]) ? null : (a[3] ? a[2] = a[4] || a[5] || "" : b && oa.test(b) && (e = F(b, !0)) && (e = b.indexOf(")", b.length - e) - b.length) && (a[0] = a[0].slice(0, e), a[2] = b.slice(0, e)), a.slice(0, 3))
                }
            },
            filter: {
                TAG: function (a) {
                    var e = a.replace(pa, qa).toLowerCase();
                    return "*" === a ? function () {
                        return !0
                    } : function (a) {
                        return a.nodeName && a.nodeName.toLowerCase() === e
                    }
                }, CLASS: function (a) {
                    var e = R[a + " "];
                    return e || (e = new RegExp("(^|[\\x20\\t\\r\\n\\f])" + a + "([\\x20\\t\\r\\n\\f]|$)")) &&
                        R(a, function (a) {
                            return e.test("string" == typeof a.className && a.className || "undefined" !== typeof a.getAttribute && a.getAttribute("class") || "")
                        })
                }, ATTR: function (a, b, h) {
                    return function (c) {
                        c = e.attr(c, a);
                        return null == c ? "!=" === b : b ? (c += "", "=" === b ? c === h : "!=" === b ? c !== h : "^=" === b ? h && 0 === c.indexOf(h) : "*=" === b ? h && -1 < c.indexOf(h) : "$=" === b ? h && c.slice(-h.length) === h : "~=" === b ? -1 < (" " + c + " ").indexOf(h) : "|=" === b ? c === h || c.slice(0, h.length + 1) === h + "-" : !1) : !0
                    }
                }, CHILD: function (a, e, b, h, c) {
                    var f = "nth" !== a.slice(0, 3), p = "last" !==
                        a.slice(-4), d = "of-type" === e;
                    return 1 === h && 0 === c ? function (a) {
                        return !!a.parentNode
                    } : function (e, b, y) {
                        var k, g, l, r, m;
                        b = f !== p ? "nextSibling" : "previousSibling";
                        var u = e.parentNode, ha = d && e.nodeName.toLowerCase();
                        y = !y && !d;
                        if (u) {
                            if (f) {
                                for (; b;) {
                                    for (g = e; g = g[b];)if (d ? g.nodeName.toLowerCase() === ha : 1 === g.nodeType)return !1;
                                    m = b = "only" === a && !m && "nextSibling"
                                }
                                return !0
                            }
                            if (m = [p ? u.firstChild : u.lastChild], p && y)for (y = u[C] || (u[C] = {}), k = y[a] || [], r = k[0] === S && k[1], l = k[0] === S && k[2], g = r && u.childNodes[r]; g = ++r && g && g[b] || (l = r = 0) ||
                                m.pop();) {
                                if (1 === g.nodeType && ++l && g === e) {
                                    y[a] = [S, r, l];
                                    break
                                }
                            } else if (y && (k = (e[C] || (e[C] = {}))[a]) && k[0] === S)l = k[1]; else for (; (g = ++r && g && g[b] || (l = r = 0) || m.pop()) && ((d ? g.nodeName.toLowerCase() !== ha : 1 !== g.nodeType) || !++l || (y && ((g[C] || (g[C] = {}))[a] = [S, l]), g !== e)););
                            return l -= c, l === h || 0 === l % h && 0 <= l / h
                        }
                    }
                }, PSEUDO: function (a, b) {
                    var c, f = w.pseudos[a] || w.setFilters[a.toLowerCase()] || e.error("unsupported pseudo: " + a);
                    return f[C] ? f(b) : 1 < f.length ? (c = [a, a, "", b], w.setFilters.hasOwnProperty(a.toLowerCase()) ? h(function (a,
                                                                                                                                       e) {
                        for (var h, c = f(a, b), p = c.length; p--;)h = X.call(a, c[p]), a[h] = !(e[h] = c[p])
                    }) : function (a) {
                        return f(a, 0, c)
                    }) : f
                }
            },
            pseudos: {
                not: h(function (a) {
                    var e = [], b = [], c = J(a.replace(fa, "$1"));
                    return c[C] ? h(function (a, e, b, h) {
                        var f;
                        b = c(a, null, h, []);
                        for (h = a.length; h--;)(f = b[h]) && (a[h] = !(e[h] = f))
                    }) : function (a, h, f) {
                        return e[0] = a, c(e, null, f, b), !b.pop()
                    }
                }), has: h(function (a) {
                    return function (b) {
                        return 0 < e(a, b).length
                    }
                }), contains: h(function (a) {
                    return function (e) {
                        return -1 < (e.textContent || e.innerText || L(e)).indexOf(a)
                    }
                }), lang: h(function (a) {
                    return Ia.test(a ||
                        "") || e.error("unsupported lang: " + a), a = a.replace(pa, qa).toLowerCase(), function (e) {
                        var b;
                        do if (b = Y ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang"))return b = b.toLowerCase(), b === a || 0 === b.indexOf(a + "-"); while ((e = e.parentNode) && 1 === e.nodeType);
                        return !1
                    }
                }), target: function (e) {
                    var b = a.location && a.location.hash;
                    return b && b.slice(1) === e.id
                }, root: function (a) {
                    return a === E
                }, focus: function (a) {
                    return a === O.activeElement && (!O.hasFocus || O.hasFocus()) && !!(a.type || a.href || ~a.tabIndex)
                }, enabled: function (a) {
                    return !1 ===
                        a.disabled
                }, disabled: function (a) {
                    return !0 === a.disabled
                }, checked: function (a) {
                    var e = a.nodeName.toLowerCase();
                    return "input" === e && !!a.checked || "option" === e && !!a.selected
                }, selected: function (a) {
                    return a.parentNode && a.parentNode.selectedIndex, !0 === a.selected
                }, empty: function (a) {
                    for (a = a.firstChild; a; a = a.nextSibling)if (6 > a.nodeType)return !1;
                    return !0
                }, parent: function (a) {
                    return !w.pseudos.empty(a)
                }, header: function (a) {
                    return sa.test(a.nodeName)
                }, input: function (a) {
                    return ra.test(a.nodeName)
                }, button: function (a) {
                    var e =
                        a.nodeName.toLowerCase();
                    return "input" === e && "button" === a.type || "button" === e
                }, text: function (a) {
                    var e;
                    return "input" === a.nodeName.toLowerCase() && "text" === a.type && (null == (e = a.getAttribute("type")) || "text" === e.toLowerCase())
                }, first: g(function () {
                    return [0]
                }), last: g(function (a, e) {
                    return [e - 1]
                }), eq: g(function (a, e, b) {
                    return [0 > b ? b + e : b]
                }), even: g(function (a, e) {
                    for (var b = 0; e > b; b += 2)a.push(b);
                    return a
                }), odd: g(function (a, e) {
                    for (var b = 1; e > b; b += 2)a.push(b);
                    return a
                }), lt: g(function (a, e, b) {
                    for (e = 0 > b ? b + e : b; 0 <= --e;)a.push(e);
                    return a
                }), gt: g(function (a, e, b) {
                    for (b = 0 > b ? b + e : b; ++b < e;)a.push(b);
                    return a
                })
            }
        };
        w.pseudos.nth = w.pseudos.eq;
        for (A in{radio: !0, checkbox: !0, file: !0, password: !0, image: !0})w.pseudos[A] = d(A);
        for (A in{submit: !0, reset: !0})w.pseudos[A] = k(A);
        r.prototype = w.filters = w.pseudos;
        w.setFilters = new r;
        F = e.tokenize = function (a, b) {
            var h, c, f, p, d, y, k;
            if (d = ba[a + " "])return b ? 0 : d.slice(0);
            d = a;
            y = [];
            for (k = w.preFilter; d;) {
                h && !(c = ja.exec(d)) || (c && (d = d.slice(c[0].length) || d), y.push(f = []));
                h = !1;
                (c = Ja.exec(d)) && (h = c.shift(), f.push({
                    value: h,
                    type: c[0].replace(fa, " ")
                }), d = d.slice(h.length));
                for (p in w.filter)!(c = xa[p].exec(d)) || k[p] && !(c = k[p](c)) || (h = c.shift(), f.push({
                    value: h,
                    type: p,
                    matches: c
                }), d = d.slice(h.length));
                if (!h)break
            }
            return b ? d.length : d ? e.error(a) : ba(a, y).slice(0)
        };
        return J = e.compile = function (a, e) {
            var b, h = [], c = [], f = M[a + " "];
            if (!f) {
                e || (e = F(a));
                for (b = e.length; b--;)f = G(e[b]), f[C] ? h.push(f) : c.push(f);
                f = M(a, v(c, h));
                f.selector = a
            }
            return f
        }, T = e.select = function (a, e, b, h) {
            var c, f, p, d, y, k = "function" == typeof a && a, g = !h && F(a = k.selector || a);
            if (b = b || [], 1 === g.length) {
                if (f = g[0] = g[0].slice(0), 2 < f.length && "ID" === (p = f[0]).type && B.getById && 9 === e.nodeType && Y && w.relative[f[1].type]) {
                    if (e = (w.find.ID(p.matches[0].replace(pa, qa), e) || [])[0], !e)return b;
                    k && (e = e.parentNode);
                    a = a.slice(f.shift().value.length)
                }
                for (c = xa.needsContext.test(a) ? 0 : f.length; c-- && (p = f[c], !w.relative[d = p.type]);)if ((y = w.find[d]) && (h = y(p.matches[0].replace(pa, qa), na.test(f[0].type) && l(e.parentNode) || e))) {
                    if (f.splice(c, 1), a = h.length && m(f), !a)return U.apply(b, h), b;
                    break
                }
            }
            return (k ||
            J(a, g))(h, e, !Y, b, na.test(a) && l(e.parentNode) || e), b
        }, B.sortStable = C.split("").sort(da).join("") === C, B.detectDuplicates = !!K, z(), B.sortDetached = c(function (a) {
            return 1 & a.compareDocumentPosition(O.createElement("div"))
        }), c(function (a) {
            return a.innerHTML = "<a href='#'></a>", "#" === a.firstChild.getAttribute("href")
        }) || f("type|href|height|width", function (a, e, b) {
            return b ? void 0 : a.getAttribute(e, "type" === e.toLowerCase() ? 1 : 2)
        }), B.attributes && c(function (a) {
            return a.innerHTML = "<input/>", a.firstChild.setAttribute("value",
                ""), "" === a.firstChild.getAttribute("value")
        }) || f("value", function (a, e, b) {
            return b || "input" !== a.nodeName.toLowerCase() ? void 0 : a.defaultValue
        }), c(function (a) {
            return null == a.getAttribute("disabled")
        }) || f("checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", function (a, e, b) {
            var h;
            return b ? void 0 : !0 === a[e] ? e.toLowerCase() : (h = a.getAttributeNode(e)) && h.specified ? h.value : null
        }), e
    }(a);
    m.find = la;
    m.expr = la.selectors;
    m.expr[":"] = m.expr.pseudos;
    m.unique = la.uniqueSort;
    m.text = la.getText;
    m.isXMLDoc = la.isXML;
    m.contains = la.contains;
    var Sa = m.expr.match.needsContext, Ta = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, lb = /^.[^:#\[\.,]*$/;
    m.filter = function (a, e, b) {
        var h = e[0];
        return b && (a = ":not(" + a + ")"), 1 === e.length && 1 === h.nodeType ? m.find.matchesSelector(h, a) ? [h] : [] : m.find.matches(a, m.grep(e, function (a) {
            return 1 === a.nodeType
        }))
    };
    m.fn.extend({
        find: function (a) {
            var e, b = this.length, h = [], c = this;
            if ("string" != typeof a)return this.pushStack(m(a).filter(function () {
                for (e = 0; b > e; e++)if (m.contains(c[e],
                        this))return !0
            }));
            for (e = 0; b > e; e++)m.find(a, c[e], h);
            return h = this.pushStack(1 < b ? m.unique(h) : h), h.selector = this.selector ? this.selector + " " + a : a, h
        }, filter: function (a) {
            return this.pushStack(c(this, a || [], !1))
        }, not: function (a) {
            return this.pushStack(c(this, a || [], !0))
        }, is: function (a) {
            return !!c(this, "string" == typeof a && Sa.test(a) ? m(a) : a || [], !1).length
        }
    });
    var Ba, tb = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;
    (m.fn.init = function (a, e) {
        var b, h;
        if (!a)return this;
        if ("string" == typeof a) {
            if (b = "<" === a[0] && ">" === a[a.length -
                1] && 3 <= a.length ? [null, a, null] : tb.exec(a), !b || !b[1] && e)return !e || e.jquery ? (e || Ba).find(a) : this.constructor(e).find(a);
            if (b[1]) {
                if (e = e instanceof m ? e[0] : e, m.merge(this, m.parseHTML(b[1], e && e.nodeType ? e.ownerDocument || e : C, !0)), Ta.test(b[1]) && m.isPlainObject(e))for (b in e)m.isFunction(this[b]) ? this[b](e[b]) : this.attr(b, e[b]);
                return this
            }
            return h = C.getElementById(b[2]), h && h.parentNode && (this.length = 1, this[0] = h), this.context = C, this.selector = a, this
        }
        return a.nodeType ? (this.context = this[0] = a, this.length = 1,
            this) : m.isFunction(a) ? "undefined" != typeof Ba.ready ? Ba.ready(a) : a(m) : (void 0 !== a.selector && (this.selector = a.selector, this.context = a.context), m.makeArray(a, this))
    }).prototype = m.fn;
    Ba = m(C);
    var ub = /^(?:parents|prev(?:Until|All))/, vb = {children: !0, contents: !0, next: !0, prev: !0};
    m.extend({
        dir: function (a, e, b) {
            for (var h = [], c = void 0 !== b; (a = a[e]) && 9 !== a.nodeType;)if (1 === a.nodeType) {
                if (c && m(a).is(b))break;
                h.push(a)
            }
            return h
        }, sibling: function (a, e) {
            for (var b = []; a; a = a.nextSibling)1 === a.nodeType && a !== e && b.push(a);
            return b
        }
    });
    m.fn.extend({
        has: function (a) {
            var e = m(a, this), b = e.length;
            return this.filter(function () {
                for (var a = 0; b > a; a++)if (m.contains(this, e[a]))return !0
            })
        }, closest: function (a, e) {
            for (var b, h = 0, c = this.length, f = [], p = Sa.test(a) || "string" != typeof a ? m(a, e || this.context) : 0; c > h; h++)for (b = this[h]; b && b !== e; b = b.parentNode)if (11 > b.nodeType && (p ? -1 < p.index(b) : 1 === b.nodeType && m.find.matchesSelector(b, a))) {
                f.push(b);
                break
            }
            return this.pushStack(1 < f.length ? m.unique(f) : f)
        }, index: function (a) {
            return a ? "string" == typeof a ?
                V.call(m(a), this[0]) : V.call(this, a.jquery ? a[0] : a) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
        }, add: function (a, e) {
            return this.pushStack(m.unique(m.merge(this.get(), m(a, e))))
        }, addBack: function (a) {
            return this.add(null == a ? this.prevObject : this.prevObject.filter(a))
        }
    });
    m.each({
        parent: function (a) {
            return (a = a.parentNode) && 11 !== a.nodeType ? a : null
        }, parents: function (a) {
            return m.dir(a, "parentNode")
        }, parentsUntil: function (a, e, b) {
            return m.dir(a, "parentNode", b)
        }, next: function (a) {
            return f(a, "nextSibling")
        },
        prev: function (a) {
            return f(a, "previousSibling")
        }, nextAll: function (a) {
            return m.dir(a, "nextSibling")
        }, prevAll: function (a) {
            return m.dir(a, "previousSibling")
        }, nextUntil: function (a, e, b) {
            return m.dir(a, "nextSibling", b)
        }, prevUntil: function (a, e, b) {
            return m.dir(a, "previousSibling", b)
        }, siblings: function (a) {
            return m.sibling((a.parentNode || {}).firstChild, a)
        }, children: function (a) {
            return m.sibling(a.firstChild)
        }, contents: function (a) {
            return a.contentDocument || m.merge([], a.childNodes)
        }
    }, function (a, e) {
        m.fn[a] = function (b,
                            h) {
            var c = m.map(this, e, b);
            return "Until" !== a.slice(-5) && (h = b), h && "string" == typeof h && (c = m.filter(h, c)), 1 < this.length && (vb[a] || m.unique(c), ub.test(a) && c.reverse()), this.pushStack(c)
        }
    });
    var ea = /\S+/g, Oa = {};
    m.Callbacks = function (a) {
        a = "string" == typeof a ? Oa[a] || k(a) : m.extend({}, a);
        var e, b, h, c, f, p, d = [], g = !a.once && [], l = function (k) {
            e = a.memory && k;
            b = !0;
            p = c || 0;
            c = 0;
            f = d.length;
            for (h = !0; d && f > p; p++)if (!1 === d[p].apply(k[0], k[1]) && a.stopOnFalse) {
                e = !1;
                break
            }
            h = !1;
            d && (g ? g.length && l(g.shift()) : e ? d = [] : r.disable())
        }, r = {
            add: function () {
                if (d) {
                    var b =
                        d.length;
                    !function sb(e) {
                        m.each(e, function (e, b) {
                            var h = m.type(b);
                            "function" === h ? a.unique && r.has(b) || d.push(b) : b && b.length && "string" !== h && sb(b)
                        })
                    }(arguments);
                    h ? f = d.length : e && (c = b, l(e))
                }
                return this
            }, remove: function () {
                return d && m.each(arguments, function (a, e) {
                    for (var b; -1 < (b = m.inArray(e, d, b));)d.splice(b, 1), h && (f >= b && f--, p >= b && p--)
                }), this
            }, has: function (a) {
                return a ? -1 < m.inArray(a, d) : !(!d || !d.length)
            }, empty: function () {
                return d = [], f = 0, this
            }, disable: function () {
                return d = g = e = void 0, this
            }, disabled: function () {
                return !d
            },
            lock: function () {
                return g = void 0, e || r.disable(), this
            }, locked: function () {
                return !g
            }, fireWith: function (a, e) {
                return !d || b && !g || (e = e || [], e = [a, e.slice ? e.slice() : e], h ? g.push(e) : l(e)), this
            }, fire: function () {
                return r.fireWith(this, arguments), this
            }, fired: function () {
                return !!b
            }
        };
        return r
    };
    m.extend({
        Deferred: function (a) {
            var e = [["resolve", "done", m.Callbacks("once memory"), "resolved"], ["reject", "fail", m.Callbacks("once memory"), "rejected"], ["notify", "progress", m.Callbacks("memory")]], b = "pending", h = {
                state: function () {
                    return b
                },
                always: function () {
                    return c.done(arguments).fail(arguments), this
                }, then: function () {
                    var a = arguments;
                    return m.Deferred(function (b) {
                        m.each(e, function (e, f) {
                            var p = m.isFunction(a[e]) && a[e];
                            c[f[1]](function () {
                                var a = p && p.apply(this, arguments);
                                a && m.isFunction(a.promise) ? a.promise().done(b.resolve).fail(b.reject).progress(b.notify) : b[f[0] + "With"](this === h ? b.promise() : this, p ? [a] : arguments)
                            })
                        });
                        a = null
                    }).promise()
                }, promise: function (a) {
                    return null != a ? m.extend(a, h) : h
                }
            }, c = {};
            return h.pipe = h.then, m.each(e, function (a,
                                                        f) {
                var p = f[2], d = f[3];
                h[f[1]] = p.add;
                d && p.add(function () {
                    b = d
                }, e[1 ^ a][2].disable, e[2][2].lock);
                c[f[0]] = function () {
                    return c[f[0] + "With"](this === c ? h : this, arguments), this
                };
                c[f[0] + "With"] = p.fireWith
            }), h.promise(c), a && a.call(c, c), c
        }, when: function (a) {
            var e = 0, b = ba.call(arguments), h = b.length, c = 1 !== h || a && m.isFunction(a.promise) ? h : 0, f = 1 === c ? a : m.Deferred(), p = function (a, e, b) {
                return function (h) {
                    e[a] = this;
                    b[a] = 1 < arguments.length ? ba.call(arguments) : h;
                    b === d ? f.notifyWith(e, b) : --c || f.resolveWith(e, b)
                }
            }, d, k, g;
            if (1 < h)for (d =
                               Array(h), k = Array(h), g = Array(h); h > e; e++)b[e] && m.isFunction(b[e].promise) ? b[e].promise().done(p(e, g, b)).fail(f.reject).progress(p(e, k, d)) : --c;
            return c || f.resolveWith(g, b), f.promise()
        }
    });
    var Ca;
    m.fn.ready = function (a) {
        return m.ready.promise().done(a), this
    };
    m.extend({
        isReady: !1, readyWait: 1, holdReady: function (a) {
            a ? m.readyWait++ : m.ready(!0)
        }, ready: function (a) {
            (!0 === a ? --m.readyWait : m.isReady) || (m.isReady = !0, !0 !== a && 0 < --m.readyWait || (Ca.resolveWith(C, [m]), m.fn.triggerHandler && (m(C).triggerHandler("ready"),
                m(C).off("ready"))))
        }
    });
    m.ready.promise = function (e) {
        return Ca || (Ca = m.Deferred(), "complete" === C.readyState ? setTimeout(m.ready) : (C.addEventListener("DOMContentLoaded", g, !1), a.addEventListener("load", g, !1))), Ca.promise(e)
    };
    m.ready.promise();
    var ga = m.access = function (a, e, b, h, c, f, p) {
        var d = 0, k = a.length, g = null == b;
        if ("object" === m.type(b))for (d in c = !0, b)m.access(a, e, d, b[d], !0, f, p); else if (void 0 !== h && (c = !0, m.isFunction(h) || (p = !0), g && (p ? (e.call(a, h), e = null) : (g = e, e = function (a, e, b) {
                return g.call(m(a), b)
            })), e))for (; k >
                           d; d++)e(a[d], b, p ? h : h.call(a[d], d, e(a[d], b)));
        return c ? a : g ? e.call(a) : k ? e(a[0], b) : f
    };
    m.acceptData = function (a) {
        return 1 === a.nodeType || 9 === a.nodeType || !+a.nodeType
    };
    l.uid = 1;
    l.accepts = m.acceptData;
    l.prototype = {
        key: function (a) {
            if (!l.accepts(a))return 0;
            var e = {}, b = a[this.expando];
            if (!b) {
                b = l.uid++;
                try {
                    e[this.expando] = {value: b}, Object.defineProperties(a, e)
                } catch (h) {
                    e[this.expando] = b, m.extend(a, e)
                }
            }
            return this.cache[b] || (this.cache[b] = {}), b
        }, set: function (a, e, b) {
            var h;
            a = this.key(a);
            var c = this.cache[a];
            if ("string" == typeof e)c[e] = b; else if (m.isEmptyObject(c))m.extend(this.cache[a], e); else for (h in e)c[h] = e[h];
            return c
        }, get: function (a, e) {
            var b = this.cache[this.key(a)];
            return void 0 === e ? b : b[e]
        }, access: function (a, e, b) {
            var h;
            return void 0 === e || e && "string" == typeof e && void 0 === b ? (h = this.get(a, e), void 0 !== h ? h : this.get(a, m.camelCase(e))) : (this.set(a, e, b), void 0 !== b ? b : e)
        }, remove: function (a, e) {
            var b, h, c = this.key(a), f = this.cache[c];
            if (void 0 === e)this.cache[c] = {}; else for (m.isArray(e) ? h = e.concat(e.map(m.camelCase)) : (b = m.camelCase(e),
                e in f ? h = [e, b] : (h = b, h = h in f ? [h] : h.match(ea) || [])), b = h.length; b--;)delete f[h[b]]
        }, hasData: function (a) {
            return !m.isEmptyObject(this.cache[a[this.expando]] || {})
        }, discard: function (a) {
            a[this.expando] && delete this.cache[a[this.expando]]
        }
    };
    var D = new l, U = new l, nb = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, mb = /([A-Z])/g;
    m.extend({
        hasData: function (a) {
            return U.hasData(a) || D.hasData(a)
        }, data: function (a, e, b) {
            return U.access(a, e, b)
        }, removeData: function (a, e) {
            U.remove(a, e)
        }, _data: function (a, e, b) {
            return D.access(a, e, b)
        }, _removeData: function (a,
                                  e) {
            D.remove(a, e)
        }
    });
    m.fn.extend({
        data: function (a, e) {
            var b, h, c, f = this[0], p = f && f.attributes;
            if (void 0 === a) {
                if (this.length && (c = U.get(f), 1 === f.nodeType && !D.get(f, "hasDataAttrs"))) {
                    for (b = p.length; b--;)p[b] && (h = p[b].name, 0 === h.indexOf("data-") && (h = m.camelCase(h.slice(5)), n(f, h, c[h])));
                    D.set(f, "hasDataAttrs", !0)
                }
                return c
            }
            return "object" == typeof a ? this.each(function () {
                U.set(this, a)
            }) : ga(this, function (e) {
                var b, h = m.camelCase(a);
                if (f && void 0 === e) {
                    if ((b = U.get(f, a), void 0 !== b) || (b = U.get(f, h), void 0 !== b) || (b = n(f,
                            h, void 0), void 0 !== b))return b
                } else this.each(function () {
                    var b = U.get(this, h);
                    U.set(this, h, e);
                    -1 !== a.indexOf("-") && void 0 !== b && U.set(this, a, e)
                })
            }, null, e, 1 < arguments.length, null, !0)
        }, removeData: function (a) {
            return this.each(function () {
                U.remove(this, a)
            })
        }
    });
    m.extend({
        queue: function (a, e, b) {
            var h;
            return a ? (e = (e || "fx") + "queue", h = D.get(a, e), b && (!h || m.isArray(b) ? h = D.access(a, e, m.makeArray(b)) : h.push(b)), h || []) : void 0
        }, dequeue: function (a, e) {
            e = e || "fx";
            var b = m.queue(a, e), h = b.length, c = b.shift(), f = m._queueHooks(a,
                e), p = function () {
                m.dequeue(a, e)
            };
            "inprogress" === c && (c = b.shift(), h--);
            c && ("fx" === e && b.unshift("inprogress"), delete f.stop, c.call(a, p, f));
            !h && f && f.empty.fire()
        }, _queueHooks: function (a, e) {
            var b = e + "queueHooks";
            return D.get(a, b) || D.access(a, b, {
                    empty: m.Callbacks("once memory").add(function () {
                        D.remove(a, [e + "queue", b])
                    })
                })
        }
    });
    m.fn.extend({
        queue: function (a, e) {
            var b = 2;
            return "string" != typeof a && (e = a, a = "fx", b--), arguments.length < b ? m.queue(this[0], a) : void 0 === e ? this : this.each(function () {
                var b = m.queue(this, a, e);
                m._queueHooks(this, a);
                "fx" === a && "inprogress" !== b[0] && m.dequeue(this, a)
            })
        }, dequeue: function (a) {
            return this.each(function () {
                m.dequeue(this, a)
            })
        }, clearQueue: function (a) {
            return this.queue(a || "fx", [])
        }, promise: function (a, e) {
            var b, h = 1, c = m.Deferred(), f = this, p = this.length, d = function () {
                --h || c.resolveWith(f, [f])
            };
            "string" != typeof a && (e = a, a = void 0);
            for (a = a || "fx"; p--;)(b = D.get(f[p], a + "queueHooks")) && b.empty && (h++, b.empty.add(d));
            return d(), c.promise(e)
        }
    });
    var Da = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, ja =
        ["Top", "Right", "Bottom", "Left"], ra = function (a, e) {
        return a = e || a, "none" === m.css(a, "display") || !m.contains(a.ownerDocument, a)
    }, Ua = /^(?:checkbox|radio)$/i;
    !function () {
        var a = C.createDocumentFragment().appendChild(C.createElement("div")), e = C.createElement("input");
        e.setAttribute("type", "radio");
        e.setAttribute("checked", "checked");
        e.setAttribute("name", "t");
        a.appendChild(e);
        M.checkClone = a.cloneNode(!0).cloneNode(!0).lastChild.checked;
        a.innerHTML = "<textarea>x</textarea>";
        M.noCloneChecked = !!a.cloneNode(!0).lastChild.defaultValue
    }();
    M.focusinBubbles = "onfocusin" in a;
    var wb = /^key/, xb = /^(?:mouse|pointer|contextmenu)|click/, Va = /^(?:focusinfocus|focusoutblur)$/, Wa = /^([^.]*)(?:\.(.+)|)$/;
    m.event = {
        global: {},
        add: function (a, e, b, h, c) {
            var f, p, d, k, g, l, r, u, n, q;
            if (g = D.get(a))for (b.handler && (f = b, b = f.handler, c = f.selector), b.guid || (b.guid = m.guid++), (k = g.events) || (k = g.events = {}), (p = g.handle) || (p = g.handle = function (e) {
                return "undefined" !== typeof m && m.event.triggered !== e.type ? m.event.dispatch.apply(a, arguments) : void 0
            }), e = (e || "").match(ea) || [""],
                                      g = e.length; g--;)d = Wa.exec(e[g]) || [], n = q = d[1], d = (d[2] || "").split(".").sort(), n && (r = m.event.special[n] || {}, n = (c ? r.delegateType : r.bindType) || n, r = m.event.special[n] || {}, l = m.extend({
                type: n,
                origType: q,
                data: h,
                handler: b,
                guid: b.guid,
                selector: c,
                needsContext: c && m.expr.match.needsContext.test(c),
                namespace: d.join(".")
            }, f), (u = k[n]) || (u = k[n] = [], u.delegateCount = 0, r.setup && !1 !== r.setup.call(a, h, d, p) || a.addEventListener && a.addEventListener(n, p, !1)), r.add && (r.add.call(a, l), l.handler.guid || (l.handler.guid = b.guid)), c ?
                u.splice(u.delegateCount++, 0, l) : u.push(l), m.event.global[n] = !0)
        },
        remove: function (a, e, b, h, c) {
            var f, p, d, k, g, l, r, u, n, q, t, G = D.hasData(a) && D.get(a);
            if (G && (k = G.events)) {
                e = (e || "").match(ea) || [""];
                for (g = e.length; g--;)if (d = Wa.exec(e[g]) || [], n = t = d[1], q = (d[2] || "").split(".").sort(), n) {
                    r = m.event.special[n] || {};
                    n = (h ? r.delegateType : r.bindType) || n;
                    u = k[n] || [];
                    d = d[2] && new RegExp("(^|\\.)" + q.join("\\.(?:.*\\.|)") + "(\\.|$)");
                    for (p = f = u.length; f--;)l = u[f], !c && t !== l.origType || b && b.guid !== l.guid || d && !d.test(l.namespace) ||
                    h && h !== l.selector && ("**" !== h || !l.selector) || (u.splice(f, 1), l.selector && u.delegateCount--, r.remove && r.remove.call(a, l));
                    p && !u.length && (r.teardown && !1 !== r.teardown.call(a, q, G.handle) || m.removeEvent(a, n, G.handle), delete k[n])
                } else for (n in k)m.event.remove(a, n + e[g], b, h, !0);
                m.isEmptyObject(k) && (delete G.handle, D.remove(a, "events"))
            }
        },
        trigger: function (e, b, h, c) {
            var f, p, d, k, g, l, r, u = [h || C], n = ka.call(e, "type") ? e.type : e;
            f = ka.call(e, "namespace") ? e.namespace.split(".") : [];
            if (p = d = h = h || C, 3 !== h.nodeType && 8 !== h.nodeType && !Va.test(n + m.event.triggered) && (0 <= n.indexOf(".") && (f = n.split("."), n = f.shift(), f.sort()), g = 0 > n.indexOf(":") && "on" + n, e = e[m.expando] ? e : new m.Event(n, "object" == typeof e && e), e.isTrigger = c ? 2 : 3, e.namespace = f.join("."), e.namespace_re = e.namespace ? new RegExp("(^|\\.)" + f.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = h), b = null == b ? [e] : m.makeArray(b, [e]), r = m.event.special[n] || {}, c || !r.trigger || !1 !== r.trigger.apply(h, b))) {
                if (!c && !r.noBubble && !m.isWindow(h)) {
                    k = r.delegateType || n;
                    for (Va.test(k +
                        n) || (p = p.parentNode); p; p = p.parentNode)u.push(p), d = p;
                    d === (h.ownerDocument || C) && u.push(d.defaultView || d.parentWindow || a)
                }
                for (f = 0; (p = u[f++]) && !e.isPropagationStopped();)e.type = 1 < f ? k : r.bindType || n, (l = (D.get(p, "events") || {})[e.type] && D.get(p, "handle")) && l.apply(p, b), (l = g && p[g]) && l.apply && m.acceptData(p) && (e.result = l.apply(p, b), !1 === e.result && e.preventDefault());
                return e.type = n, c || e.isDefaultPrevented() || r._default && !1 !== r._default.apply(u.pop(), b) || !m.acceptData(h) || g && m.isFunction(h[n]) && !m.isWindow(h) &&
                (d = h[g], d && (h[g] = null), m.event.triggered = n, h[n](), m.event.triggered = void 0, d && (h[g] = d)), e.result
            }
        },
        dispatch: function (a) {
            a = m.event.fix(a);
            var e, b, h, c, f, p = [], d = ba.call(arguments);
            e = (D.get(this, "events") || {})[a.type] || [];
            var k = m.event.special[a.type] || {};
            if (d[0] = a, a.delegateTarget = this, !k.preDispatch || !1 !== k.preDispatch.call(this, a)) {
                p = m.event.handlers.call(this, a, e);
                for (e = 0; (c = p[e++]) && !a.isPropagationStopped();)for (a.currentTarget = c.elem, b = 0; (f = c.handlers[b++]) && !a.isImmediatePropagationStopped();)a.namespace_re && !a.namespace_re.test(f.namespace) || (a.handleObj = f, a.data = f.data, h = ((m.event.special[f.origType] || {}).handle || f.handler).apply(c.elem, d), void 0 === h || !1 !== (a.result = h) || (a.preventDefault(), a.stopPropagation()));
                return k.postDispatch && k.postDispatch.call(this, a), a.result
            }
        },
        handlers: function (a, e) {
            var b, h, c, f, p = [], d = e.delegateCount, k = a.target;
            if (d && k.nodeType && (!a.button || "click" !== a.type))for (; k !== this; k = k.parentNode || this)if (!0 !== k.disabled || "click" !== a.type) {
                h = [];
                for (b = 0; d > b; b++)f = e[b], c = f.selector +
                    " ", void 0 === h[c] && (h[c] = f.needsContext ? 0 <= m(c, this).index(k) : m.find(c, this, null, [k]).length), h[c] && h.push(f);
                h.length && p.push({elem: k, handlers: h})
            }
            return d < e.length && p.push({elem: this, handlers: e.slice(d)}), p
        },
        props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
        fixHooks: {},
        keyHooks: {
            props: ["char", "charCode", "key", "keyCode"], filter: function (a, e) {
                return null == a.which && (a.which = null != e.charCode ? e.charCode : e.keyCode),
                    a
            }
        },
        mouseHooks: {
            props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
            filter: function (a, e) {
                var b, h, c, f = e.button;
                return null == a.pageX && null != e.clientX && (b = a.target.ownerDocument || C, h = b.documentElement, c = b.body, a.pageX = e.clientX + (h && h.scrollLeft || c && c.scrollLeft || 0) - (h && h.clientLeft || c && c.clientLeft || 0), a.pageY = e.clientY + (h && h.scrollTop || c && c.scrollTop || 0) - (h && h.clientTop || c && c.clientTop || 0)), a.which || void 0 === f || (a.which = 1 & f ? 1 : 2 & f ? 3 : 4 & f ? 2 : 0), a
            }
        },
        fix: function (a) {
            if (a[m.expando])return a;
            var e, b, h;
            e = a.type;
            var c = a, f = this.fixHooks[e];
            f || (this.fixHooks[e] = f = xb.test(e) ? this.mouseHooks : wb.test(e) ? this.keyHooks : {});
            h = f.props ? this.props.concat(f.props) : this.props;
            a = new m.Event(c);
            for (e = h.length; e--;)b = h[e], a[b] = c[b];
            return a.target || (a.target = C), 3 === a.target.nodeType && (a.target = a.target.parentNode), f.filter ? f.filter(a, c) : a
        },
        special: {
            load: {noBubble: !0}, focus: {
                trigger: function () {
                    return this !== v() && this.focus ? (this.focus(), !1) : void 0
                }, delegateType: "focusin"
            }, blur: {
                trigger: function () {
                    return this ===
                    v() && this.blur ? (this.blur(), !1) : void 0
                }, delegateType: "focusout"
            }, click: {
                trigger: function () {
                    return "checkbox" === this.type && this.click && m.nodeName(this, "input") ? (this.click(), !1) : void 0
                }, _default: function (a) {
                    return m.nodeName(a.target, "a")
                }
            }, beforeunload: {
                postDispatch: function (a) {
                    void 0 !== a.result && a.originalEvent && (a.originalEvent.returnValue = a.result)
                }
            }
        },
        simulate: function (a, e, b, h) {
            a = m.extend(new m.Event, b, {type: a, isSimulated: !0, originalEvent: {}});
            h ? m.event.trigger(a, null, e) : m.event.dispatch.call(e,
                a);
            a.isDefaultPrevented() && b.preventDefault()
        }
    };
    m.removeEvent = function (a, e, b) {
        a.removeEventListener && a.removeEventListener(e, b, !1)
    };
    m.Event = function (a, e) {
        return this instanceof m.Event ? (a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || void 0 === a.defaultPrevented && !1 === a.returnValue ? q : t) : this.type = a, e && m.extend(this, e), this.timeStamp = a && a.timeStamp || m.now(), void(this[m.expando] = !0)) : new m.Event(a, e)
    };
    m.Event.prototype = {
        isDefaultPrevented: t, isPropagationStopped: t,
        isImmediatePropagationStopped: t, preventDefault: function () {
            var a = this.originalEvent;
            this.isDefaultPrevented = q;
            a && a.preventDefault && a.preventDefault()
        }, stopPropagation: function () {
            var a = this.originalEvent;
            this.isPropagationStopped = q;
            a && a.stopPropagation && a.stopPropagation()
        }, stopImmediatePropagation: function () {
            var a = this.originalEvent;
            this.isImmediatePropagationStopped = q;
            a && a.stopImmediatePropagation && a.stopImmediatePropagation();
            this.stopPropagation()
        }
    };
    m.each({
        mouseenter: "mouseover", mouseleave: "mouseout",
        pointerenter: "pointerover", pointerleave: "pointerout"
    }, function (a, e) {
        m.event.special[a] = {
            delegateType: e, bindType: e, handle: function (a) {
                var b, h = a.relatedTarget, c = a.handleObj;
                return (!h || h !== this && !m.contains(this, h)) && (a.type = c.origType, b = c.handler.apply(this, arguments), a.type = e), b
            }
        }
    });
    M.focusinBubbles || m.each({focus: "focusin", blur: "focusout"}, function (a, e) {
        var b = function (a) {
            m.event.simulate(e, a.target, m.event.fix(a), !0)
        };
        m.event.special[e] = {
            setup: function () {
                var h = this.ownerDocument || this, c = D.access(h,
                    e);
                c || h.addEventListener(a, b, !0);
                D.access(h, e, (c || 0) + 1)
            }, teardown: function () {
                var h = this.ownerDocument || this, c = D.access(h, e) - 1;
                c ? D.access(h, e, c) : (h.removeEventListener(a, b, !0), D.remove(h, e))
            }
        }
    });
    m.fn.extend({
        on: function (a, e, b, h, c) {
            var f, p;
            if ("object" == typeof a) {
                "string" != typeof e && (b = b || e, e = void 0);
                for (p in a)this.on(p, e, b, a[p], c);
                return this
            }
            if (null == b && null == h ? (h = e, b = e = void 0) : null == h && ("string" == typeof e ? (h = b, b = void 0) : (h = b, b = e, e = void 0)), !1 === h)h = t; else if (!h)return this;
            return 1 === c && (f = h, h = function (a) {
                return m().off(a),
                    f.apply(this, arguments)
            }, h.guid = f.guid || (f.guid = m.guid++)), this.each(function () {
                m.event.add(this, a, h, b, e)
            })
        }, one: function (a, e, b, h) {
            return this.on(a, e, b, h, 1)
        }, off: function (a, e, b) {
            var h, c;
            if (a && a.preventDefault && a.handleObj)return h = a.handleObj, m(a.delegateTarget).off(h.namespace ? h.origType + "." + h.namespace : h.origType, h.selector, h.handler), this;
            if ("object" == typeof a) {
                for (c in a)this.off(c, e, a[c]);
                return this
            }
            return (!1 === e || "function" == typeof e) && (b = e, e = void 0), !1 === b && (b = t), this.each(function () {
                m.event.remove(this,
                    a, b, e)
            })
        }, trigger: function (a, e) {
            return this.each(function () {
                m.event.trigger(a, e, this)
            })
        }, triggerHandler: function (a, e) {
            var b = this[0];
            return b ? m.event.trigger(a, e, b, !0) : void 0
        }
    });
    var Xa = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, Ya = /<([\w:]+)/, yb = /<|&#?\w+;/, zb = /<(?:script|style|link)/i, Ab = /checked\s*(?:[^=]|=\s*.checked.)/i, Za = /^$|\/(?:java|ecma)script/i, ob = /^true\/(.*)/, Bb = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, X = {
        option: [1, "<select multiple='multiple'>", "</select>"],
        thead: [1, "<table>", "</table>"],
        col: [2, "<table><colgroup>", "</colgroup></table>"],
        tr: [2, "<table><tbody>", "</tbody></table>"],
        td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
        _default: [0, "", ""]
    };
    X.optgroup = X.option;
    X.tbody = X.tfoot = X.colgroup = X.caption = X.thead;
    X.th = X.td;
    m.extend({
        clone: function (a, e, b) {
            var h, c, f, p, d = a.cloneNode(!0), k = m.contains(a.ownerDocument, a);
            if (!(M.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType || m.isXMLDoc(a)))for (p = G(d), f = G(a), h = 0, c = f.length; c > h; h++) {
                var g = f[h], l = p[h], n = l.nodeName.toLowerCase();
                "input" === n && Ua.test(g.type) ? l.checked = g.checked : ("input" === n || "textarea" === n) && (l.defaultValue = g.defaultValue)
            }
            if (e)if (b)for (f = f || G(a), p = p || G(d), h = 0, c = f.length; c > h; h++)u(f[h], p[h]); else u(a, d);
            return p = G(d, "script"), 0 < p.length && r(p, !k && G(a, "script")), d
        }, buildFragment: function (a, e, b, h) {
            for (var c, f, p, d, k = e.createDocumentFragment(), g = [], l = 0, n = a.length; n > l; l++)if (c = a[l], c || 0 === c)if ("object" === m.type(c))m.merge(g, c.nodeType ? [c] : c); else if (yb.test(c)) {
                f = f || k.appendChild(e.createElement("div"));
                p = (Ya.exec(c) ||
                ["", ""])[1].toLowerCase();
                p = X[p] || X._default;
                f.innerHTML = p[1] + c.replace(Xa, "<$1></$2>") + p[2];
                for (p = p[0]; p--;)f = f.lastChild;
                m.merge(g, f.childNodes);
                f = k.firstChild;
                f.textContent = ""
            } else g.push(e.createTextNode(c));
            k.textContent = "";
            for (l = 0; c = g[l++];)if ((!h || -1 === m.inArray(c, h)) && (d = m.contains(c.ownerDocument, c), f = G(k.appendChild(c), "script"), d && r(f), b))for (p = 0; c = f[p++];)Za.test(c.type || "") && b.push(c);
            return k
        }, cleanData: function (a) {
            for (var e, b, h, c, f = m.event.special, p = 0; void 0 !== (b = a[p]); p++) {
                if (m.acceptData(b) &&
                    (c = b[D.expando], c && (e = D.cache[c]))) {
                    if (e.events)for (h in e.events)f[h] ? m.event.remove(b, h) : m.removeEvent(b, h, e.handle);
                    D.cache[c] && delete D.cache[c]
                }
                delete U.cache[b[U.expando]]
            }
        }
    });
    m.fn.extend({
        text: function (a) {
            return ga(this, function (a) {
                return void 0 === a ? m.text(this) : this.empty().each(function () {
                    1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = a)
                })
            }, null, a, arguments.length)
        }, append: function () {
            return this.domManip(arguments, function (a) {
                1 !== this.nodeType && 11 !== this.nodeType &&
                9 !== this.nodeType || e(this, a).appendChild(a)
            })
        }, prepend: function () {
            return this.domManip(arguments, function (a) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var b = e(this, a);
                    b.insertBefore(a, b.firstChild)
                }
            })
        }, before: function () {
            return this.domManip(arguments, function (a) {
                this.parentNode && this.parentNode.insertBefore(a, this)
            })
        }, after: function () {
            return this.domManip(arguments, function (a) {
                this.parentNode && this.parentNode.insertBefore(a, this.nextSibling)
            })
        }, remove: function (a, e) {
            for (var b, h =
                a ? m.filter(a, this) : this, c = 0; null != (b = h[c]); c++)e || 1 !== b.nodeType || m.cleanData(G(b)), b.parentNode && (e && m.contains(b.ownerDocument, b) && r(G(b, "script")), b.parentNode.removeChild(b));
            return this
        }, empty: function () {
            for (var a, e = 0; null != (a = this[e]); e++)1 === a.nodeType && (m.cleanData(G(a, !1)), a.textContent = "");
            return this
        }, clone: function (a, e) {
            return a = null == a ? !1 : a, e = null == e ? a : e, this.map(function () {
                return m.clone(this, a, e)
            })
        }, html: function (a) {
            return ga(this, function (a) {
                var e = this[0] || {}, b = 0, h = this.length;
                if (void 0 ===
                    a && 1 === e.nodeType)return e.innerHTML;
                if ("string" == typeof a && !zb.test(a) && !X[(Ya.exec(a) || ["", ""])[1].toLowerCase()]) {
                    a = a.replace(Xa, "<$1></$2>");
                    try {
                        for (; h > b; b++)e = this[b] || {}, 1 === e.nodeType && (m.cleanData(G(e, !1)), e.innerHTML = a);
                        e = 0
                    } catch (c) {
                    }
                }
                e && this.empty().append(a)
            }, null, a, arguments.length)
        }, replaceWith: function () {
            var a = arguments[0];
            return this.domManip(arguments, function (e) {
                a = this.parentNode;
                m.cleanData(G(this));
                a && a.replaceChild(e, this)
            }), a && (a.length || a.nodeType) ? this : this.remove()
        }, detach: function (a) {
            return this.remove(a,
                !0)
        }, domManip: function (a, e) {
            a = da.apply([], a);
            var b, c, f, d, k = 0, g = this.length, l = this, r = g - 1, n = a[0], u = m.isFunction(n);
            if (u || 1 < g && "string" == typeof n && !M.checkClone && Ab.test(n))return this.each(function (b) {
                var h = l.eq(b);
                u && (a[0] = n.call(this, b, h.html()));
                h.domManip(a, e)
            });
            if (g && (b = m.buildFragment(a, this[0].ownerDocument, !1, this), c = b.firstChild, 1 === b.childNodes.length && (b = c), c)) {
                c = m.map(G(b, "script"), h);
                for (f = c.length; g > k; k++)d = b, k !== r && (d = m.clone(d, !0, !0), f && m.merge(c, G(d, "script"))), e.call(this[k], d, k);
                if (f)for (b = c[c.length - 1].ownerDocument, m.map(c, p), k = 0; f > k; k++)d = c[k], Za.test(d.type || "") && !D.access(d, "globalEval") && m.contains(b, d) && (d.src ? m._evalUrl && m._evalUrl(d.src) : m.globalEval(d.textContent.replace(Bb, "")))
            }
            return this
        }
    });
    m.each({
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith"
    }, function (a, e) {
        m.fn[a] = function (a) {
            for (var b = [], h = m(a), c = h.length - 1, f = 0; c >= f; f++)a = f === c ? this : this.clone(!0), m(h[f])[e](a), ca.apply(b, a.get());
            return this.pushStack(b)
        }
    });
    var na, Pa = {}, Qa = /^margin/, Ga = new RegExp("^(" + Da + ")(?!px)[a-z%]+$", "i"), wa = function (a) {
        return a.ownerDocument.defaultView.getComputedStyle(a, null)
    };
    !function () {
        var e, b, h = C.documentElement, c = C.createElement("div"), f = C.createElement("div");
        if (f.style) {
            var p = function () {
                f.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute";
                f.innerHTML = "";
                h.appendChild(c);
                var p = a.getComputedStyle(f,
                    null);
                e = "1%" !== p.top;
                b = "4px" === p.width;
                h.removeChild(c)
            };
            f.style.backgroundClip = "content-box";
            f.cloneNode(!0).style.backgroundClip = "";
            M.clearCloneStyle = "content-box" === f.style.backgroundClip;
            c.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute";
            c.appendChild(f);
            a.getComputedStyle && m.extend(M, {
                pixelPosition: function () {
                    return p(), e
                }, boxSizingReliable: function () {
                    return null == b && p(), b
                }, reliableMarginRight: function () {
                    var e, b = f.appendChild(C.createElement("div"));
                    return b.style.cssText = f.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", b.style.marginRight = b.style.width = "0", f.style.width = "1px", h.appendChild(c), e = !parseFloat(a.getComputedStyle(b, null).marginRight), h.removeChild(c), e
                }
            })
        }
    }();
    m.swap = function (a, e, b, h) {
        var c, f = {};
        for (c in e)f[c] = a.style[c], a.style[c] = e[c];
        b = b.apply(a, h || []);
        for (c in e)a.style[c] = f[c];
        return b
    };
    var Cb = /^(none|table(?!-c[ea]).+)/, qb = new RegExp("^(" +
        Da + ")(.*)$", "i"), Db = new RegExp("^([+-])=(" + Da + ")", "i"), Eb = {
        position: "absolute",
        visibility: "hidden",
        display: "block"
    }, $a = {letterSpacing: "0", fontWeight: "400"}, Ra = ["Webkit", "O", "Moz", "ms"];
    m.extend({
        cssHooks: {
            opacity: {
                get: function (a, e) {
                    if (e) {
                        var b = F(a, "opacity");
                        return "" === b ? "1" : b
                    }
                }
            }
        },
        cssNumber: {
            columnCount: !0,
            fillOpacity: !0,
            flexGrow: !0,
            flexShrink: !0,
            fontWeight: !0,
            lineHeight: !0,
            opacity: !0,
            order: !0,
            orphans: !0,
            widows: !0,
            zIndex: !0,
            zoom: !0
        },
        cssProps: {"float": "cssFloat"},
        style: function (a, e, b, h) {
            if (a && 3 !==
                a.nodeType && 8 !== a.nodeType && a.style) {
                var c, f, p, d = m.camelCase(e), k = a.style;
                return e = m.cssProps[d] || (m.cssProps[d] = aa(k, d)), p = m.cssHooks[e] || m.cssHooks[d], void 0 === b ? p && "get" in p && void 0 !== (c = p.get(a, !1, h)) ? c : k[e] : (f = typeof b, "string" === f && (c = Db.exec(b)) && (b = (c[1] + 1) * c[2] + parseFloat(m.css(a, e)), f = "number"), null != b && b === b && ("number" !== f || m.cssNumber[d] || (b += "px"), M.clearCloneStyle || "" !== b || 0 !== e.indexOf("background") || (k[e] = "inherit"), p && "set" in p && void 0 === (b = p.set(a, b, h)) || (k[e] = b)), void 0)
            }
        },
        css: function (a,
                       e, b, h) {
            var c, f, p, d = m.camelCase(e);
            return e = m.cssProps[d] || (m.cssProps[d] = aa(a.style, d)), p = m.cssHooks[e] || m.cssHooks[d], p && "get" in p && (c = p.get(a, !0, b)), void 0 === c && (c = F(a, e, h)), "normal" === c && e in $a && (c = $a[e]), "" === b || b ? (f = parseFloat(c), !0 === b || m.isNumeric(f) ? f || 0 : c) : c
        }
    });
    m.each(["height", "width"], function (a, e) {
        m.cssHooks[e] = {
            get: function (a, b, h) {
                return b ? Cb.test(m.css(a, "display")) && 0 === a.offsetWidth ? m.swap(a, Eb, function () {
                    return I(a, e, h)
                }) : I(a, e, h) : void 0
            }, set: function (a, b, h) {
                var c = h && wa(a);
                return z(a,
                    b, h ? R(a, e, h, "border-box" === m.css(a, "boxSizing", !1, c), c) : 0)
            }
        }
    });
    m.cssHooks.marginRight = J(M.reliableMarginRight, function (a, e) {
        return e ? m.swap(a, {display: "inline-block"}, F, [a, "marginRight"]) : void 0
    });
    m.each({margin: "", padding: "", border: "Width"}, function (a, e) {
        m.cssHooks[a + e] = {
            expand: function (b) {
                var h = 0, c = {};
                for (b = "string" == typeof b ? b.split(" ") : [b]; 4 > h; h++)c[a + ja[h] + e] = b[h] || b[h - 2] || b[0];
                return c
            }
        };
        Qa.test(a) || (m.cssHooks[a + e].set = z)
    });
    m.fn.extend({
        css: function (a, e) {
            return ga(this, function (a, e, b) {
                var h,
                    c = {}, f = 0;
                if (m.isArray(e)) {
                    b = wa(a);
                    for (h = e.length; h > f; f++)c[e[f]] = m.css(a, e[f], !1, b);
                    return c
                }
                return void 0 !== b ? m.style(a, e, b) : m.css(a, e)
            }, a, e, 1 < arguments.length)
        }, show: function () {
            return w(this, !0)
        }, hide: function () {
            return w(this)
        }, toggle: function (a) {
            return "boolean" == typeof a ? a ? this.show() : this.hide() : this.each(function () {
                ra(this) ? m(this).show() : m(this).hide()
            })
        }
    });
    m.Tween = x;
    x.prototype = {
        constructor: x, init: function (a, e, b, h, c, f) {
            this.elem = a;
            this.prop = b;
            this.easing = c || "swing";
            this.options = e;
            this.start =
                this.now = this.cur();
            this.end = h;
            this.unit = f || (m.cssNumber[b] ? "" : "px")
        }, cur: function () {
            var a = x.propHooks[this.prop];
            return a && a.get ? a.get(this) : x.propHooks._default.get(this)
        }, run: function (a) {
            var e, b = x.propHooks[this.prop];
            return this.pos = e = this.options.duration ? m.easing[this.easing](a, this.options.duration * a, 0, 1, this.options.duration) : a, this.now = (this.end - this.start) * e + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), b && b.set ? b.set(this) : x.propHooks._default.set(this),
                this
        }
    };
    x.prototype.init.prototype = x.prototype;
    x.propHooks = {
        _default: {
            get: function (a) {
                var e;
                return null == a.elem[a.prop] || a.elem.style && null != a.elem.style[a.prop] ? (e = m.css(a.elem, a.prop, ""), e && "auto" !== e ? e : 0) : a.elem[a.prop]
            }, set: function (a) {
                m.fx.step[a.prop] ? m.fx.step[a.prop](a) : a.elem.style && (null != a.elem.style[m.cssProps[a.prop]] || m.cssHooks[a.prop]) ? m.style(a.elem, a.prop, a.now + a.unit) : a.elem[a.prop] = a.now
            }
        }
    };
    x.propHooks.scrollTop = x.propHooks.scrollLeft = {
        set: function (a) {
            a.elem.nodeType && a.elem.parentNode &&
            (a.elem[a.prop] = a.now)
        }
    };
    m.easing = {
        linear: function (a) {
            return a
        }, swing: function (a) {
            return .5 - Math.cos(a * Math.PI) / 2
        }
    };
    m.fx = x.prototype.init;
    m.fx.step = {};
    var oa, Ea, Fb = /^(?:toggle|show|hide)$/, bb = new RegExp("^(?:([+-])=|)(" + Da + ")([a-z%]*)$", "i"), Gb = /queueHooks$/, za = [function (a, e, b) {
        var h, c, f, p, d, k, g, l = this, r = {}, n = a.style, u = a.nodeType && ra(a), q = D.get(a, "fxshow");
        b.queue || (p = m._queueHooks(a, "fx"), null == p.unqueued && (p.unqueued = 0, d = p.empty.fire, p.empty.fire = function () {
            p.unqueued || d()
        }), p.unqueued++, l.always(function () {
            l.always(function () {
                p.unqueued--;
                m.queue(a, "fx").length || p.empty.fire()
            })
        }));
        1 === a.nodeType && ("height" in e || "width" in e) && (b.overflow = [n.overflow, n.overflowX, n.overflowY], k = m.css(a, "display"), g = "none" === k ? D.get(a, "olddisplay") || A(a.nodeName) : k, "inline" === g && "none" === m.css(a, "float") && (n.display = "inline-block"));
        b.overflow && (n.overflow = "hidden", l.always(function () {
            n.overflow = b.overflow[0];
            n.overflowX = b.overflow[1];
            n.overflowY = b.overflow[2]
        }));
        for (h in e)if (c = e[h], Fb.exec(c)) {
            if (delete e[h], f = f || "toggle" === c, c === (u ? "hide" : "show")) {
                if ("show" !==
                    c || !q || void 0 === q[h])continue;
                u = !0
            }
            r[h] = q && q[h] || m.style(a, h)
        } else k = void 0;
        if (m.isEmptyObject(r))"inline" === ("none" === k ? A(a.nodeName) : k) && (n.display = k); else for (h in q ? "hidden" in q && (u = q.hidden) : q = D.access(a, "fxshow", {}), f && (q.hidden = !u), u ? m(a).show() : l.done(function () {
            m(a).hide()
        }), l.done(function () {
            var e;
            D.remove(a, "fxshow");
            for (e in r)m.style(a, e, r[e])
        }), r)e = Q(u ? q[h] : 0, h, l), h in q || (q[h] = e.start, u && (e.end = e.start, e.start = "width" === h || "height" === h ? 1 : 0))
    }], sa = {
        "*": [function (a, e) {
            var b = this.createTween(a,
                e), h = b.cur(), c = bb.exec(e), f = c && c[3] || (m.cssNumber[a] ? "" : "px"), p = (m.cssNumber[a] || "px" !== f && +h) && bb.exec(m.css(b.elem, a)), d = 1, k = 20;
            if (p && p[3] !== f) {
                f = f || p[3];
                c = c || [];
                p = +h || 1;
                do d = d || ".5", p /= d, m.style(b.elem, a, p + f); while (d !== (d = b.cur() / h) && 1 !== d && --k)
            }
            return c && (p = b.start = +p || +h || 0, b.unit = f, b.end = c[1] ? p + (c[1] + 1) * c[2] : +c[2]), b
        }]
    };
    m.Animation = m.extend(E, {
        tweener: function (a, e) {
            m.isFunction(a) ? (e = a, a = ["*"]) : a = a.split(" ");
            for (var b, h = 0, c = a.length; c > h; h++)b = a[h], sa[b] = sa[b] || [], sa[b].unshift(e)
        }, prefilter: function (a,
                                e) {
            e ? za.unshift(a) : za.push(a)
        }
    });
    m.speed = function (a, e, b) {
        var h = a && "object" == typeof a ? m.extend({}, a) : {
            complete: b || !b && e || m.isFunction(a) && a,
            duration: a,
            easing: b && e || e && !m.isFunction(e) && e
        };
        return h.duration = m.fx.off ? 0 : "number" == typeof h.duration ? h.duration : h.duration in m.fx.speeds ? m.fx.speeds[h.duration] : m.fx.speeds._default, (null == h.queue || !0 === h.queue) && (h.queue = "fx"), h.old = h.complete, h.complete = function () {
            m.isFunction(h.old) && h.old.call(this);
            h.queue && m.dequeue(this, h.queue)
        }, h
    };
    m.fn.extend({
        fadeTo: function (a,
                          e, b, h) {
            return this.filter(ra).css("opacity", 0).show().end().animate({opacity: e}, a, b, h)
        }, animate: function (a, e, b, h) {
            var c = m.isEmptyObject(a), f = m.speed(e, b, h);
            e = function () {
                var e = E(this, m.extend({}, a), f);
                (c || D.get(this, "finish")) && e.stop(!0)
            };
            return e.finish = e, c || !1 === f.queue ? this.each(e) : this.queue(f.queue, e)
        }, stop: function (a, e, b) {
            var h = function (a) {
                var e = a.stop;
                delete a.stop;
                e(b)
            };
            return "string" != typeof a && (b = e, e = a, a = void 0), e && !1 !== a && this.queue(a || "fx", []), this.each(function () {
                var e = !0, c = null != a &&
                    a + "queueHooks", f = m.timers, p = D.get(this);
                if (c)p[c] && p[c].stop && h(p[c]); else for (c in p)p[c] && p[c].stop && Gb.test(c) && h(p[c]);
                for (c = f.length; c--;)f[c].elem !== this || null != a && f[c].queue !== a || (f[c].anim.stop(b), e = !1, f.splice(c, 1));
                !e && b || m.dequeue(this, a)
            })
        }, finish: function (a) {
            return !1 !== a && (a = a || "fx"), this.each(function () {
                var e, b = D.get(this), h = b[a + "queue"];
                e = b[a + "queueHooks"];
                var c = m.timers, f = h ? h.length : 0;
                b.finish = !0;
                m.queue(this, a, []);
                e && e.stop && e.stop.call(this, !0);
                for (e = c.length; e--;)c[e].elem === this
                c[e].queue === a && (c[e].anim.stop(!0), c.splice(e, 1));
                for (e = 0; f > e; e++)h[e] && h[e].finish && h[e].finish.call(this);
                delete b.finish
            })
        }
    });
    m.each(["toggle", "show", "hide"], function (a, e) {
        var b = m.fn[e];
        m.fn[e] = function (a, h, c) {
            return null == a || "boolean" == typeof a ? b.apply(this, arguments) : this.animate(K(e, !0), a, h, c)
        }
    });
    m.each({
        slideDown: K("show"),
        slideUp: K("hide"),
        slideToggle: K("toggle"),
        fadeIn: {opacity: "show"},
        fadeOut: {opacity: "hide"},
        fadeToggle: {opacity: "toggle"}
    }, function (a, e) {
        m.fn[a] = function (a, b, h) {
            return this.animate(e,
                a, b, h)
        }
    });
    m.timers = [];
    m.fx.tick = function () {
        var a, e = 0, b = m.timers;
        for (oa = m.now(); e < b.length; e++)a = b[e], a() || b[e] !== a || b.splice(e--, 1);
        b.length || m.fx.stop();
        oa = void 0
    };
    m.fx.timer = function (a) {
        m.timers.push(a);
        a() ? m.fx.start() : m.timers.pop()
    };
    m.fx.interval = 13;
    m.fx.start = function () {
        Ea || (Ea = setInterval(m.fx.tick, m.fx.interval))
    };
    m.fx.stop = function () {
        clearInterval(Ea);
        Ea = null
    };
    m.fx.speeds = {slow: 600, fast: 200, _default: 400};
    m.fn.delay = function (a, e) {
        return a = m.fx ? m.fx.speeds[a] || a : a, e = e || "fx", this.queue(e, function (e,
                                                                                          b) {
            var h = setTimeout(e, a);
            b.stop = function () {
                clearTimeout(h)
            }
        })
    };
    (function () {
        var a = C.createElement("input"), e = C.createElement("select"), b = e.appendChild(C.createElement("option"));
        a.type = "checkbox";
        M.checkOn = "" !== a.value;
        M.optSelected = b.selected;
        e.disabled = !0;
        M.optDisabled = !b.disabled;
        a = C.createElement("input");
        a.value = "t";
        a.type = "radio";
        M.radioValue = "t" === a.value
    })();
    var cb, ia = m.expr.attrHandle;
    m.fn.extend({
        attr: function (a, e) {
            return ga(this, m.attr, a, e, 1 < arguments.length)
        }, removeAttr: function (a) {
            return this.each(function () {
                m.removeAttr(this,
                    a)
            })
        }
    });
    m.extend({
        attr: function (a, e, b) {
            var h, c, f = a.nodeType;
            if (a && 3 !== f && 8 !== f && 2 !== f)return "undefined" === typeof a.getAttribute ? m.prop(a, e, b) : (1 === f && m.isXMLDoc(a) || (e = e.toLowerCase(), h = m.attrHooks[e] || (m.expr.match.bool.test(e) ? cb : void 0)), void 0 === b ? h && "get" in h && null !== (c = h.get(a, e)) ? c : (c = m.find.attr(a, e), null == c ? void 0 : c) : null !== b ? h && "set" in h && void 0 !== (c = h.set(a, b, e)) ? c : (a.setAttribute(e, b + ""), b) : void m.removeAttr(a, e))
        }, removeAttr: function (a, e) {
            var b, h, c = 0, f = e && e.match(ea);
            if (f && 1 === a.nodeType)for (; b =
                                                 f[c++];)h = m.propFix[b] || b, m.expr.match.bool.test(b) && (a[h] = !1), a.removeAttribute(b)
        }, attrHooks: {
            type: {
                set: function (a, e) {
                    if (!M.radioValue && "radio" === e && m.nodeName(a, "input")) {
                        var b = a.value;
                        return a.setAttribute("type", e), b && (a.value = b), e
                    }
                }
            }
        }
    });
    cb = {
        set: function (a, e, b) {
            return !1 === e ? m.removeAttr(a, b) : a.setAttribute(b, b), b
        }
    };
    m.each(m.expr.match.bool.source.match(/\w+/g), function (a, e) {
        var b = ia[e] || m.find.attr;
        ia[e] = function (a, e, h) {
            var c, f;
            return h || (f = ia[e], ia[e] = c, c = null != b(a, e, h) ? e.toLowerCase() : null,
                ia[e] = f), c
        }
    });
    var Hb = /^(?:input|select|textarea|button)$/i;
    m.fn.extend({
        prop: function (a, e) {
            return ga(this, m.prop, a, e, 1 < arguments.length)
        }, removeProp: function (a) {
            return this.each(function () {
                delete this[m.propFix[a] || a]
            })
        }
    });
    m.extend({
        propFix: {"for": "htmlFor", "class": "className"}, prop: function (a, e, b) {
            var h, c, f, p = a.nodeType;
            if (a && 3 !== p && 8 !== p && 2 !== p)return f = 1 !== p || !m.isXMLDoc(a), f && (e = m.propFix[e] || e, c = m.propHooks[e]), void 0 !== b ? c && "set" in c && void 0 !== (h = c.set(a, b, e)) ? h : a[e] = b : c && "get" in c && null !==
            (h = c.get(a, e)) ? h : a[e]
        }, propHooks: {
            tabIndex: {
                get: function (a) {
                    return a.hasAttribute("tabindex") || Hb.test(a.nodeName) || a.href ? a.tabIndex : -1
                }
            }
        }
    });
    M.optSelected || (m.propHooks.selected = {
        get: function (a) {
            a = a.parentNode;
            return a && a.parentNode && a.parentNode.selectedIndex, null
        }
    });
    m.each("tabIndex readOnly maxLength cellSpacing cellPadding rowSpan colSpan useMap frameBorder contentEditable".split(" "), function () {
        m.propFix[this.toLowerCase()] = this
    });
    var Ka = /[\t\r\n\f]/g;
    m.fn.extend({
        addClass: function (a) {
            var e,
                b, h, c, f;
            e = "string" == typeof a && a;
            var p = 0, d = this.length;
            if (m.isFunction(a))return this.each(function (e) {
                m(this).addClass(a.call(this, e, this.className))
            });
            if (e)for (e = (a || "").match(ea) || []; d > p; p++)if (b = this[p], h = 1 === b.nodeType && (b.className ? (" " + b.className + " ").replace(Ka, " ") : " ")) {
                for (f = 0; c = e[f++];)0 > h.indexOf(" " + c + " ") && (h += c + " ");
                h = m.trim(h);
                b.className !== h && (b.className = h)
            }
            return this
        }, removeClass: function (a) {
            var e, b, h, c, f;
            e = 0 === arguments.length || "string" == typeof a && a;
            var p = 0, d = this.length;
            if (m.isFunction(a))return this.each(function (e) {
                m(this).removeClass(a.call(this,
                    e, this.className))
            });
            if (e)for (e = (a || "").match(ea) || []; d > p; p++)if (b = this[p], h = 1 === b.nodeType && (b.className ? (" " + b.className + " ").replace(Ka, " ") : "")) {
                for (f = 0; c = e[f++];)for (; 0 <= h.indexOf(" " + c + " ");)h = h.replace(" " + c + " ", " ");
                h = a ? m.trim(h) : "";
                b.className !== h && (b.className = h)
            }
            return this
        }, toggleClass: function (a, e) {
            var b = typeof a;
            return "boolean" == typeof e && "string" === b ? e ? this.addClass(a) : this.removeClass(a) : this.each(m.isFunction(a) ? function (b) {
                m(this).toggleClass(a.call(this, b, this.className, e), e)
            } :
                function () {
                    if ("string" === b)for (var e, h = 0, c = m(this), f = a.match(ea) || []; e = f[h++];)c.hasClass(e) ? c.removeClass(e) : c.addClass(e); else("undefined" === b || "boolean" === b) && (this.className && D.set(this, "__className__", this.className), this.className = this.className || !1 === a ? "" : D.get(this, "__className__") || "")
                })
        }, hasClass: function (a) {
            a = " " + a + " ";
            for (var e = 0, b = this.length; b > e; e++)if (1 === this[e].nodeType && 0 <= (" " + this[e].className + " ").replace(Ka, " ").indexOf(a))return !0;
            return !1
        }
    });
    var Ib = /\r/g;
    m.fn.extend({
        val: function (a) {
            var e,
                b, h, c = this[0];
            if (arguments.length)return h = m.isFunction(a), this.each(function (b) {
                var c;
                1 === this.nodeType && (c = h ? a.call(this, b, m(this).val()) : a, null == c ? c = "" : "number" == typeof c ? c += "" : m.isArray(c) && (c = m.map(c, function (a) {
                    return null == a ? "" : a + ""
                })), e = m.valHooks[this.type] || m.valHooks[this.nodeName.toLowerCase()], e && "set" in e && void 0 !== e.set(this, c, "value") || (this.value = c))
            });
            if (c)return e = m.valHooks[c.type] || m.valHooks[c.nodeName.toLowerCase()], e && "get" in e && void 0 !== (b = e.get(c, "value")) ? b : (b = c.value, "string" == typeof b ? b.replace(Ib, "") : null == b ? "" : b)
        }
    });
    m.extend({
        valHooks: {
            option: {
                get: function (a) {
                    var e = m.find.attr(a, "value");
                    return null != e ? e : m.trim(m.text(a))
                }
            }, select: {
                get: function (a) {
                    for (var e, b = a.options, h = a.selectedIndex, c = "select-one" === a.type || 0 > h, f = c ? null : [], p = c ? h + 1 : b.length, d = 0 > h ? p : c ? h : 0; p > d; d++)if (e = b[d], !(!e.selected && d !== h || (M.optDisabled ? e.disabled : null !== e.getAttribute("disabled")) || e.parentNode.disabled && m.nodeName(e.parentNode, "optgroup"))) {
                        if (a = m(e).val(), c)return a;
                        f.push(a)
                    }
                    return f
                }, set: function (a,
                                  e) {
                    for (var b, h, c = a.options, f = m.makeArray(e), p = c.length; p--;)h = c[p], (h.selected = 0 <= m.inArray(h.value, f)) && (b = !0);
                    return b || (a.selectedIndex = -1), f
                }
            }
        }
    });
    m.each(["radio", "checkbox"], function () {
        m.valHooks[this] = {
            set: function (a, e) {
                return m.isArray(e) ? a.checked = 0 <= m.inArray(m(a).val(), e) : void 0
            }
        };
        M.checkOn || (m.valHooks[this].get = function (a) {
            return null === a.getAttribute("value") ? "on" : a.value
        })
    });
    m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),
        function (a, e) {
            m.fn[e] = function (a, b) {
                return 0 < arguments.length ? this.on(e, null, a, b) : this.trigger(e)
            }
        });
    m.fn.extend({
        hover: function (a, e) {
            return this.mouseenter(a).mouseleave(e || a)
        }, bind: function (a, e, b) {
            return this.on(a, null, e, b)
        }, unbind: function (a, e) {
            return this.off(a, null, e)
        }, delegate: function (a, e, b, h) {
            return this.on(e, a, b, h)
        }, undelegate: function (a, e, b) {
            return 1 === arguments.length ? this.off(a, "**") : this.off(e, a || "**", b)
        }
    });
    var La = m.now(), Ma = /\?/;
    m.parseJSON = function (a) {
        return JSON.parse(a + "")
    };
    m.parseXML =
        function (a) {
            var e, b;
            if (!a || "string" != typeof a)return null;
            try {
                b = new DOMParser, e = b.parseFromString(a, "text/xml")
            } catch (h) {
                e = void 0
            }
            return (!e || e.getElementsByTagName("parsererror").length) && m.error("Invalid XML: " + a), e
        };
    var ma, fa, Jb = /#.*$/, db = /([?&])_=[^&]*/, Kb = /^(.*?):[ \t]*([^\r\n]*)$/gm, Lb = /^(?:GET|HEAD)$/, Mb = /^\/\//, eb = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, fb = {}, Ha = {}, gb = "*/".concat("*");
    try {
        fa = location.href
    } catch (Ub) {
        fa = C.createElement("a"), fa.href = "", fa = fa.href
    }
    ma = eb.exec(fa.toLowerCase()) ||
        [];
    m.extend({
        active: 0, lastModified: {}, etag: {}, ajaxSettings: {
            url: fa,
            type: "GET",
            isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(ma[1]),
            global: !0,
            processData: !0,
            async: !0,
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            accepts: {
                "*": gb,
                text: "text/plain",
                html: "text/html",
                xml: "application/xml, text/xml",
                json: "application/json, text/javascript"
            },
            contents: {xml: /xml/, html: /html/, json: /json/},
            responseFields: {xml: "responseXML", text: "responseText", json: "responseJSON"},
            converters: {
                "* text": String,
                "text html": !0, "text json": m.parseJSON, "text xml": m.parseXML
            },
            flatOptions: {url: !0, context: !0}
        }, ajaxSetup: function (a, e) {
            return e ? T(T(a, m.ajaxSettings), e) : T(m.ajaxSettings, a)
        }, ajaxPrefilter: S(fb), ajaxTransport: S(Ha), ajax: function (a, e) {
            function b(a, e, p, k) {
                var l, v, A, y, w = e;
                if (2 !== B) {
                    B = 2;
                    d && clearTimeout(d);
                    h = void 0;
                    f = k || "";
                    x.readyState = 0 < a ? 4 : 0;
                    k = 200 <= a && 300 > a || 304 === a;
                    if (p) {
                        A = r;
                        for (var L = x, F, J, H, T, aa = A.contents, K = A.dataTypes; "*" === K[0];)K.shift(), void 0 === F && (F = A.mimeType || L.getResponseHeader("Content-Type"));
                        if (F)for (J in aa)if (aa[J] && aa[J].test(F)) {
                            K.unshift(J);
                            break
                        }
                        if (K[0] in p)H = K[0]; else {
                            for (J in p) {
                                if (!K[0] || A.converters[J + " " + K[0]]) {
                                    H = J;
                                    break
                                }
                                T || (T = J)
                            }
                            H = H || T
                        }
                        A = H ? (H !== K[0] && K.unshift(H), p[H]) : void 0
                    }
                    var O;
                    a:{
                        p = r;
                        F = A;
                        J = x;
                        H = k;
                        var z, N, ha;
                        A = {};
                        L = p.dataTypes.slice();
                        if (L[1])for (z in p.converters)A[z.toLowerCase()] = p.converters[z];
                        for (T = L.shift(); T;)if (p.responseFields[T] && (J[p.responseFields[T]] = F), !ha && H && p.dataFilter && (F = p.dataFilter(F, p.dataType)), ha = T, T = L.shift())if ("*" === T)T = ha; else if ("*" !== ha &&
                            ha !== T) {
                            if (z = A[ha + " " + T] || A["* " + T], !z)for (O in A)if (N = O.split(" "), N[1] === T && (z = A[ha + " " + N[0]] || A["* " + N[0]])) {
                                !0 === z ? z = A[O] : !0 !== A[O] && (T = N[0], L.unshift(N[1]));
                                break
                            }
                            if (!0 !== z)if (z && p["throws"])F = z(F); else try {
                                F = z(F)
                            } catch (E) {
                                O = {state: "parsererror", error: z ? E : "No conversion from " + ha + " to " + T};
                                break a
                            }
                        }
                        O = {state: "success", data: F}
                    }
                    A = O;
                    k ? (r.ifModified && (y = x.getResponseHeader("Last-Modified"), y && (m.lastModified[c] = y), y = x.getResponseHeader("etag"), y && (m.etag[c] = y)), 204 === a || "HEAD" === r.type ? w = "nocontent" :
                        304 === a ? w = "notmodified" : (w = A.state, l = A.data, v = A.error, k = !v)) : (v = w, (a || !w) && (w = "error", 0 > a && (a = 0)));
                    x.status = a;
                    x.statusText = (e || w) + "";
                    k ? q.resolveWith(n, [l, w, x]) : q.rejectWith(n, [x, w, v]);
                    x.statusCode(G);
                    G = void 0;
                    g && u.trigger(k ? "ajaxSuccess" : "ajaxError", [x, r, k ? l : v]);
                    t.fireWith(n, [x, w]);
                    g && (u.trigger("ajaxComplete", [x, r]), --m.active || m.event.trigger("ajaxStop"))
                }
            }

            "object" == typeof a && (e = a, a = void 0);
            e = e || {};
            var h, c, f, p, d, k, g, l, r = m.ajaxSetup({}, e), n = r.context || r, u = r.context && (n.nodeType || n.jquery) ? m(n) : m.event,
                q = m.Deferred(), t = m.Callbacks("once memory"), G = r.statusCode || {}, v = {}, A = {}, B = 0, w = "canceled", x = {
                    readyState: 0, getResponseHeader: function (a) {
                        var e;
                        if (2 === B) {
                            if (!p)for (p = {}; e = Kb.exec(f);)p[e[1].toLowerCase()] = e[2];
                            e = p[a.toLowerCase()]
                        }
                        return null == e ? null : e
                    }, getAllResponseHeaders: function () {
                        return 2 === B ? f : null
                    }, setRequestHeader: function (a, e) {
                        var b = a.toLowerCase();
                        return B || (a = A[b] = A[b] || a, v[a] = e), this
                    }, overrideMimeType: function (a) {
                        return B || (r.mimeType = a), this
                    }, statusCode: function (a) {
                        var e;
                        if (a)if (2 > B)for (e in a)G[e] =
                            [G[e], a[e]]; else x.always(a[x.status]);
                        return this
                    }, abort: function (a) {
                        a = a || w;
                        return h && h.abort(a), b(0, a), this
                    }
                };
            if (q.promise(x).complete = t.add, x.success = x.done, x.error = x.fail, r.url = ((a || r.url || fa) + "").replace(Jb, "").replace(Mb, ma[1] + "//"), r.type = e.method || e.type || r.method || r.type, r.dataTypes = m.trim(r.dataType || "*").toLowerCase().match(ea) || [""], null == r.crossDomain && (k = eb.exec(r.url.toLowerCase()), r.crossDomain = !(!k || k[1] === ma[1] && k[2] === ma[2] && (k[3] || ("http:" === k[1] ? "80" : "443")) === (ma[3] || ("http:" ===
                ma[1] ? "80" : "443")))), r.data && r.processData && "string" != typeof r.data && (r.data = m.param(r.data, r.traditional)), L(fb, r, e, x), 2 === B)return x;
            (g = r.global) && 0 === m.active++ && m.event.trigger("ajaxStart");
            r.type = r.type.toUpperCase();
            r.hasContent = !Lb.test(r.type);
            c = r.url;
            r.hasContent || (r.data && (c = r.url += (Ma.test(c) ? "&" : "?") + r.data, delete r.data), !1 === r.cache && (r.url = db.test(c) ? c.replace(db, "$1_=" + La++) : c + (Ma.test(c) ? "&" : "?") + "_=" + La++));
            r.ifModified && (m.lastModified[c] && x.setRequestHeader("If-Modified-Since",
                m.lastModified[c]), m.etag[c] && x.setRequestHeader("If-None-Match", m.etag[c]));
            (r.data && r.hasContent && !1 !== r.contentType || e.contentType) && x.setRequestHeader("Content-Type", r.contentType);
            x.setRequestHeader("Accept", r.dataTypes[0] && r.accepts[r.dataTypes[0]] ? r.accepts[r.dataTypes[0]] + ("*" !== r.dataTypes[0] ? ", " + gb + "; q=0.01" : "") : r.accepts["*"]);
            for (l in r.headers)x.setRequestHeader(l, r.headers[l]);
            if (r.beforeSend && (!1 === r.beforeSend.call(n, x, r) || 2 === B))return x.abort();
            w = "abort";
            for (l in{
                success: 1, error: 1,
                complete: 1
            })x[l](r[l]);
            if (h = L(Ha, r, e, x)) {
                x.readyState = 1;
                g && u.trigger("ajaxSend", [x, r]);
                r.async && 0 < r.timeout && (d = setTimeout(function () {
                    x.abort("timeout")
                }, r.timeout));
                try {
                    B = 1, h.send(v, b)
                } catch (F) {
                    if (!(2 > B))throw F;
                    b(-1, F)
                }
            } else b(-1, "No Transport");
            return x
        }, getJSON: function (a, e, b) {
            return m.get(a, e, b, "json")
        }, getScript: function (a, e) {
            return m.get(a, void 0, e, "script")
        }
    });
    m.each(["get", "post"], function (a, e) {
        m[e] = function (a, b, h, c) {
            return m.isFunction(b) && (c = c || h, h = b, b = void 0), m.ajax({
                url: a, type: e, dataType: c,
                data: b, success: h
            })
        }
    });
    m.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function (a, e) {
        m.fn[e] = function (a) {
            return this.on(e, a)
        }
    });
    m._evalUrl = function (a) {
        return m.ajax({url: a, type: "GET", dataType: "script", async: !1, global: !1, "throws": !0})
    };
    m.fn.extend({
        wrapAll: function (a) {
            var e;
            return m.isFunction(a) ? this.each(function (e) {
                m(this).wrapAll(a.call(this, e))
            }) : (this[0] && (e = m(a, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && e.insertBefore(this[0]), e.map(function () {
                for (var a =
                    this; a.firstElementChild;)a = a.firstElementChild;
                return a
            }).append(this)), this)
        }, wrapInner: function (a) {
            return this.each(m.isFunction(a) ? function (e) {
                m(this).wrapInner(a.call(this, e))
            } : function () {
                var e = m(this), b = e.contents();
                b.length ? b.wrapAll(a) : e.append(a)
            })
        }, wrap: function (a) {
            var e = m.isFunction(a);
            return this.each(function (b) {
                m(this).wrapAll(e ? a.call(this, b) : a)
            })
        }, unwrap: function () {
            return this.parent().each(function () {
                m.nodeName(this, "body") || m(this).replaceWith(this.childNodes)
            }).end()
        }
    });
    m.expr.filters.hidden =
        function (a) {
            return 0 >= a.offsetWidth && 0 >= a.offsetHeight
        };
    m.expr.filters.visible = function (a) {
        return !m.expr.filters.hidden(a)
    };
    var Nb = /%20/g, rb = /\[\]$/, hb = /\r?\n/g, Ob = /^(?:submit|button|image|reset|file)$/i, Pb = /^(?:input|select|textarea|keygen)/i;
    m.param = function (a, e) {
        var b, h = [], c = function (a, e) {
            e = m.isFunction(e) ? e() : null == e ? "" : e;
            h[h.length] = encodeURIComponent(a) + "=" + encodeURIComponent(e)
        };
        if (void 0 === e && (e = m.ajaxSettings && m.ajaxSettings.traditional), m.isArray(a) || a.jquery && !m.isPlainObject(a))m.each(a,
            function () {
                c(this.name, this.value)
            }); else for (b in a)O(b, a[b], e, c);
        return h.join("&").replace(Nb, "+")
    };
    m.fn.extend({
        serialize: function () {
            return m.param(this.serializeArray())
        }, serializeArray: function () {
            return this.map(function () {
                var a = m.prop(this, "elements");
                return a ? m.makeArray(a) : this
            }).filter(function () {
                var a = this.type;
                return this.name && !m(this).is(":disabled") && Pb.test(this.nodeName) && !Ob.test(a) && (this.checked || !Ua.test(a))
            }).map(function (a, e) {
                var b = m(this).val();
                return null == b ? null : m.isArray(b) ?
                    m.map(b, function (a) {
                        return {name: e.name, value: a.replace(hb, "\r\n")}
                    }) : {name: e.name, value: b.replace(hb, "\r\n")}
            }).get()
        }
    });
    m.ajaxSettings.xhr = function () {
        try {
            return new XMLHttpRequest
        } catch (a) {
        }
    };
    var Qb = 0, Fa = {}, Rb = {0: 200, 1223: 204}, ua = m.ajaxSettings.xhr();
    a.ActiveXObject && m(a).on("unload", function () {
        for (var a in Fa)Fa[a]()
    });
    M.cors = !!ua && "withCredentials" in ua;
    M.ajax = ua = !!ua;
    m.ajaxTransport(function (a) {
        var e;
        return M.cors || ua && !a.crossDomain ? {
            send: function (b, h) {
                var c, f = a.xhr(), p = ++Qb;
                if (f.open(a.type,
                        a.url, a.async, a.username, a.password), a.xhrFields)for (c in a.xhrFields)f[c] = a.xhrFields[c];
                a.mimeType && f.overrideMimeType && f.overrideMimeType(a.mimeType);
                a.crossDomain || b["X-Requested-With"] || (b["X-Requested-With"] = "XMLHttpRequest");
                for (c in b)f.setRequestHeader(c, b[c]);
                e = function (a) {
                    return function () {
                        e && (delete Fa[p], e = f.onload = f.onerror = null, "abort" === a ? f.abort() : "error" === a ? h(f.status, f.statusText) : h(Rb[f.status] || f.status, f.statusText, "string" == typeof f.responseText ? {text: f.responseText} : void 0,
                            f.getAllResponseHeaders()))
                    }
                };
                f.onload = e();
                f.onerror = e("error");
                e = Fa[p] = e("abort");
                try {
                    f.send(a.hasContent && a.data || null)
                } catch (d) {
                    if (e)throw d;
                }
            }, abort: function () {
                e && e()
            }
        } : void 0
    });
    m.ajaxSetup({
        accepts: {script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},
        contents: {script: /(?:java|ecma)script/},
        converters: {
            "text script": function (a) {
                return m.globalEval(a), a
            }
        }
    });
    m.ajaxPrefilter("script", function (a) {
        void 0 === a.cache && (a.cache = !1);
        a.crossDomain && (a.type =
            "GET")
    });
    m.ajaxTransport("script", function (a) {
        if (a.crossDomain) {
            var e, b;
            return {
                send: function (h, c) {
                    e = m("<script>").prop({
                        async: !0,
                        charset: a.scriptCharset,
                        src: a.url
                    }).on("load error", b = function (a) {
                        e.remove();
                        b = null;
                        a && c("error" === a.type ? 404 : 200, a.type)
                    });
                    C.head.appendChild(e[0])
                }, abort: function () {
                    b && b()
                }
            }
        }
    });
    var ib = [], Na = /(=)\?(?=&|$)|\?\?/;
    m.ajaxSetup({
        jsonp: "callback", jsonpCallback: function () {
            var a = ib.pop() || m.expando + "_" + La++;
            return this[a] = !0, a
        }
    });
    m.ajaxPrefilter("json jsonp", function (e, b, h) {
        var c,
            f, p, d = !1 !== e.jsonp && (Na.test(e.url) ? "url" : "string" == typeof e.data && !(e.contentType || "").indexOf("application/x-www-form-urlencoded") && Na.test(e.data) && "data");
        return d || "jsonp" === e.dataTypes[0] ? (c = e.jsonpCallback = m.isFunction(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, d ? e[d] = e[d].replace(Na, "$1" + c) : !1 !== e.jsonp && (e.url += (Ma.test(e.url) ? "&" : "?") + e.jsonp + "=" + c), e.converters["script json"] = function () {
            return p || m.error(c + " was not called"), p[0]
        }, e.dataTypes[0] = "json", f = a[c], a[c] = function () {
            p =
                arguments
        }, h.always(function () {
            a[c] = f;
            e[c] && (e.jsonpCallback = b.jsonpCallback, ib.push(c));
            p && m.isFunction(f) && f(p[0]);
            p = f = void 0
        }), "script") : void 0
    });
    m.parseHTML = function (a, e, b) {
        if (!a || "string" != typeof a)return null;
        "boolean" == typeof e && (b = e, e = !1);
        e = e || C;
        var h = Ta.exec(a);
        b = !b && [];
        return h ? [e.createElement(h[1])] : (h = m.buildFragment([a], e, b), b && b.length && m(b).remove(), m.merge([], h.childNodes))
    };
    var jb = m.fn.load;
    m.fn.load = function (a, e, b) {
        if ("string" != typeof a && jb)return jb.apply(this, arguments);
        var h,
            c, f, p = this, d = a.indexOf(" ");
        return 0 <= d && (h = m.trim(a.slice(d)), a = a.slice(0, d)), m.isFunction(e) ? (b = e, e = void 0) : e && "object" == typeof e && (c = "POST"), 0 < p.length && m.ajax({
            url: a,
            type: c,
            dataType: "html",
            data: e
        }).done(function (a) {
            f = arguments;
            p.html(h ? m("<div>").append(m.parseHTML(a)).find(h) : a)
        }).complete(b && function (a, e) {
                p.each(b, f || [a.responseText, e, a])
            }), this
    };
    m.expr.filters.animated = function (a) {
        return m.grep(m.timers, function (e) {
            return a === e.elem
        }).length
    };
    var kb = a.document.documentElement;
    m.offset = {
        setOffset: function (a,
                             e, b) {
            var h, c, f, p, d, k, g = m.css(a, "position"), l = m(a), r = {};
            "static" === g && (a.style.position = "relative");
            d = l.offset();
            f = m.css(a, "top");
            k = m.css(a, "left");
            ("absolute" === g || "fixed" === g) && -1 < (f + k).indexOf("auto") ? (h = l.position(), p = h.top, c = h.left) : (p = parseFloat(f) || 0, c = parseFloat(k) || 0);
            m.isFunction(e) && (e = e.call(a, b, d));
            null != e.top && (r.top = e.top - d.top + p);
            null != e.left && (r.left = e.left - d.left + c);
            "using" in e ? e.using.call(a, r) : l.css(r)
        }
    };
    m.fn.extend({
        offset: function (a) {
            if (arguments.length)return void 0 === a ? this :
                this.each(function (e) {
                    m.offset.setOffset(this, a, e)
                });
            var e, b, h = this[0], c = {top: 0, left: 0}, f = h && h.ownerDocument;
            if (f)return e = f.documentElement, m.contains(e, h) ? ("undefined" !== typeof h.getBoundingClientRect && (c = h.getBoundingClientRect()), b = Y(f), {
                top: c.top + b.pageYOffset - e.clientTop,
                left: c.left + b.pageXOffset - e.clientLeft
            }) : c
        }, position: function () {
            if (this[0]) {
                var a, e, b = this[0], h = {top: 0, left: 0};
                return "fixed" === m.css(b, "position") ? e = b.getBoundingClientRect() : (a = this.offsetParent(), e = this.offset(), m.nodeName(a[0],
                    "html") || (h = a.offset()), h.top += m.css(a[0], "borderTopWidth", !0), h.left += m.css(a[0], "borderLeftWidth", !0)), {
                    top: e.top - h.top - m.css(b, "marginTop", !0),
                    left: e.left - h.left - m.css(b, "marginLeft", !0)
                }
            }
        }, offsetParent: function () {
            return this.map(function () {
                for (var a = this.offsetParent || kb; a && !m.nodeName(a, "html") && "static" === m.css(a, "position");)a = a.offsetParent;
                return a || kb
            })
        }
    });
    m.each({scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function (e, b) {
        var h = "pageYOffset" === b;
        m.fn[e] = function (c) {
            return ga(this, function (e,
                                      c, f) {
                var p = Y(e);
                return void 0 === f ? p ? p[b] : e[c] : void(p ? p.scrollTo(h ? a.pageXOffset : f, h ? f : a.pageYOffset) : e[c] = f)
            }, e, c, arguments.length, null)
        }
    });
    m.each(["top", "left"], function (a, e) {
        m.cssHooks[e] = J(M.pixelPosition, function (a, b) {
            return b ? (b = F(a, e), Ga.test(b) ? m(a).position()[e] + "px" : b) : void 0
        })
    });
    m.each({Height: "height", Width: "width"}, function (a, e) {
        m.each({padding: "inner" + a, content: e, "": "outer" + a}, function (b, h) {
            m.fn[h] = function (h, c) {
                var f = arguments.length && (b || "boolean" != typeof h), p = b || (!0 === h || !0 === c ? "margin" :
                        "border");
                return ga(this, function (e, b, h) {
                    var c;
                    return m.isWindow(e) ? e.document.documentElement["client" + a] : 9 === e.nodeType ? (c = e.documentElement, Math.max(e.body["scroll" + a], c["scroll" + a], e.body["offset" + a], c["offset" + a], c["client" + a])) : void 0 === h ? m.css(e, b, p) : m.style(e, b, h, p)
                }, e, f ? h : void 0, f, null)
            }
        })
    });
    m.fn.size = function () {
        return this.length
    };
    m.fn.andSelf = m.fn.addBack;
    "function" == typeof define && define.amd && define("jquery", [], function () {
        return m
    });
    var Sb = a.jQuery, Tb = a.$;
    return m.noConflict = function (e) {
        return a.$ ===
        m && (a.$ = Tb), e && a.jQuery === m && (a.jQuery = Sb), m
    }, "undefined" === typeof d && (a.jQuery = a.$ = m), m
});
if ("undefined" == typeof jQuery)throw Error("Bootstrap's JavaScript requires jQuery");
+function (a) {
    a = a.fn.jquery.split(" ")[0].split(".");
    if (2 > a[0] && 9 > a[1] || 1 == a[0] && 9 == a[1] && 1 > a[2])throw Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher");
}(jQuery);
+function (a) {
    var d = function (b) {
        a(b).on("click", '[data-dismiss="alert"]', this.close)
    };
    d.VERSION = "3.3.0";
    d.TRANSITION_DURATION = 150;
    d.prototype.close = function (b) {
        function f() {
            l.css("display", "none")
        }

        var k = a(this), g = k.attr("data-target");
        g || (g = k.attr("href"), g = g && g.replace(/.*(?=#[^\s]*$)/, ""));
        var l = a(g);
        b && b.preventDefault();
        l.length || (l = k.closest(".alert"));
        l.trigger(b = a.Event("close.bs.alert"));
        b.isDefaultPrevented() || (l.removeClass("in"), a.support.transition && l.hasClass("fade") ? l.one("bsTransitionEnd",
            f).emulateTransitionEnd(d.TRANSITION_DURATION) : f())
    };
    var b = a.fn.alert;
    a.fn.alert = function (b) {
        return this.each(function () {
            var f = a(this), k = f.data("bs.alert");
            k || f.data("bs.alert", k = new d(this));
            "string" == typeof b && k[b].call(f)
        })
    };
    a.fn.alert.Constructor = d;
    a.fn.alert.noConflict = function () {
        return a.fn.alert = b, this
    };
    a(document).on("click.bs.alert.data-api", '[data-dismiss="alert"]', d.prototype.close)
}(jQuery);
+function (a) {
    function d(c) {
        return this.each(function () {
            var d = a(this), g = d.data("bs.button"), l = "object" == typeof c && c;
            g || d.data("bs.button", g = new b(this, l));
            "toggle" == c ? g.toggle() : c && g.setState(c)
        })
    }

    var b = function (c, d) {
        this.$element = a(c);
        this.options = a.extend({}, b.DEFAULTS, d);
        this.isLoading = !1
    };
    b.VERSION = "3.3.0";
    b.DEFAULTS = {loadingText: "loading..."};
    b.prototype.setState = function (b) {
        var c = this.$element, d = c.is("input") ? "val" : "html", l = c.data();
        b += "Text";
        null == l.resetText && c.data("resetText", c[d]());
        setTimeout(a.proxy(function () {
            c[d](null ==
            l[b] ? this.options[b] : l[b]);
            "loadingText" == b ? (this.isLoading = !0, c.addClass("disabled").attr("disabled", "disabled")) : this.isLoading && (this.isLoading = !1, c.removeClass("disabled").removeAttr("disabled"))
        }, this), 0)
    };
    b.prototype.toggle = function () {
        var a = !0, b = this.$element.closest('[data-toggle="buttons"]');
        if (b.length) {
            var c = this.$element.find("input");
            "radio" == c.prop("type") && (c.prop("checked") && this.$element.hasClass("active") ? a = !1 : b.find(".active").removeClass("active"));
            a && c.prop("checked", !this.$element.hasClass("active")).trigger("change")
        } else this.$element.attr("aria-pressed",
            !this.$element.hasClass("active"));
        a && this.$element.toggleClass("active")
    };
    var c = a.fn.button;
    a.fn.button = d;
    a.fn.button.Constructor = b;
    a.fn.button.noConflict = function () {
        return a.fn.button = c, this
    };
    a(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function (b) {
        var c = a(b.target);
        c.hasClass("btn") || (c = c.closest(".btn"));
        d.call(c, "toggle");
        b.preventDefault()
    }).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function (b) {
        a(b.target).closest(".btn").toggleClass("focus",
            "focus" == b.type)
    })
}(jQuery);
+function (a) {
    function d(c) {
        return this.each(function () {
            var f = a(this), d = f.data("bs.carousel"), n = a.extend({}, b.DEFAULTS, f.data(), "object" == typeof c && c), q = "string" == typeof c ? c : n.slide;
            d || f.data("bs.carousel", d = new b(this, n));
            "number" == typeof c ? d.to(c) : q ? d[q]() : n.interval && d.pause().cycle()
        })
    }

    var b = function (b, c) {
        this.$element = a(b);
        this.$indicators = this.$element.find(".carousel-indicators");
        this.options = c;
        this.paused = this.sliding = this.interval = this.$active = this.$items = null;
        this.options.keyboard && this.$element.on("keydown.bs.carousel",
            a.proxy(this.keydown, this));
        "hover" != this.options.pause || "ontouchstart" in document.documentElement || this.$element.on("mouseenter.bs.carousel", a.proxy(this.pause, this)).on("mouseleave.bs.carousel", a.proxy(this.cycle, this))
    };
    b.VERSION = "3.3.0";
    b.TRANSITION_DURATION = 600;
    b.DEFAULTS = {interval: 5E3, pause: "hover", wrap: !0, keyboard: !0};
    b.prototype.keydown = function (a) {
        switch (a.which) {
            case 37:
                this.prev();
                break;
            case 39:
                this.next();
                break;
            default:
                return
        }
        a.preventDefault()
    };
    b.prototype.cycle = function (b) {
        return b ||
        (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this
    };
    b.prototype.getItemIndex = function (a) {
        return this.$items = a.parent().children(".item"), this.$items.index(a || this.$active)
    };
    b.prototype.getItemForDirection = function (a, b) {
        var c = "prev" == a ? -1 : 1, c = (this.getItemIndex(b) + c) % this.$items.length;
        return this.$items.eq(c)
    };
    b.prototype.to = function (a) {
        var b = this, c = this.getItemIndex(this.$active =
            this.$element.find(".item.active"));
        return a > this.$items.length - 1 || 0 > a ? void 0 : this.sliding ? this.$element.one("slid.bs.carousel", function () {
            b.to(a)
        }) : c == a ? this.pause().cycle() : this.slide(a > c ? "next" : "prev", this.$items.eq(a))
    };
    b.prototype.pause = function (b) {
        return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
    };
    b.prototype.next = function () {
        return this.sliding ?
            void 0 : this.slide("next")
    };
    b.prototype.prev = function () {
        return this.sliding ? void 0 : this.slide("prev")
    };
    b.prototype.slide = function (c, f) {
        var d = this.$element.find(".item.active"), n = f || this.getItemForDirection(c, d), q = this.interval, t = "next" == c ? "left" : "right", v = "next" == c ? "first" : "last", e = this;
        if (!n.length) {
            if (!this.options.wrap)return;
            n = this.$element.find(".item")[v]()
        }
        if (n.hasClass("active"))return this.sliding = !1;
        var v = n[0], h = a.Event("slide.bs.carousel", {relatedTarget: v, direction: t});
        if (this.$element.trigger(h),
                !h.isDefaultPrevented()) {
            if (this.sliding = !0, q && this.pause(), this.$indicators.length)this.$indicators.find(".active").removeClass("active"), (h = a(this.$indicators.children()[this.getItemIndex(n)])) && h.addClass("active");
            var p = a.Event("slid.bs.carousel", {relatedTarget: v, direction: t});
            return a.support.transition && this.$element.hasClass("slide") ? (n.addClass(c), n[0].offsetWidth, d.addClass(t), n.addClass(t), d.one("bsTransitionEnd", function () {
                n.removeClass([c, t].join(" ")).addClass("active");
                d.removeClass(["active",
                    t].join(" "));
                e.sliding = !1;
                setTimeout(function () {
                    e.$element.trigger(p)
                }, 0)
            }).emulateTransitionEnd(b.TRANSITION_DURATION)) : (d.removeClass("active"), n.addClass("active"), this.sliding = !1, this.$element.trigger(p)), q && this.cycle(), this
        }
    };
    var c = a.fn.carousel;
    a.fn.carousel = d;
    a.fn.carousel.Constructor = b;
    a.fn.carousel.noConflict = function () {
        return a.fn.carousel = c, this
    };
    var f = function (b) {
        var c, f = a(this), n = a(f.attr("data-target") || (c = f.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, ""));
        n.hasClass("carousel") && (c =
            a.extend({}, n.data(), f.data()), (f = f.attr("data-slide-to")) && (c.interval = !1), d.call(n, c), f && n.data("bs.carousel").to(f), b.preventDefault())
    };
    a(document).on("click.bs.carousel.data-api", "[data-slide]", f).on("click.bs.carousel.data-api", "[data-slide-to]", f);
    a(window).on("load", function () {
        a('[data-ride="carousel"]').each(function () {
            var b = a(this);
            d.call(b, b.data())
        })
    })
}(jQuery);
+function (a) {
    function d(d) {
        d && 3 === d.which || (a(c).remove(), a(f).each(function () {
            var c = a(this), f = b(c), k = {relatedTarget: this};
            f.hasClass("open") && (f.trigger(d = a.Event("hide.bs.dropdown", k)), d.isDefaultPrevented() || (c.attr("aria-expanded", "false"), f.removeClass("open").trigger("hidden.bs.dropdown", k)))
        }))
    }

    function b(b) {
        var c = b.attr("data-target");
        c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
        return (c = c && a(c)) && c.length ? c : b.parent()
    }

    var c = ".dropdown-backdrop", f = '[data-toggle="dropdown"]',
        k = function (b) {
            a(b).on("click.bs.dropdown", this.toggle)
        };
    k.VERSION = "3.3.0";
    k.prototype.toggle = function (c) {
        var f = a(this);
        if (!f.is(".disabled, :disabled")) {
            var k = b(f), g = k.hasClass("open");
            if (d(), !g) {
                "ontouchstart" in document.documentElement && !k.closest(".navbar-nav").length && a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click", d);
                g = {relatedTarget: this};
                if (k.trigger(c = a.Event("show.bs.dropdown", g)), c.isDefaultPrevented())return;
                f.trigger("focus").attr("aria-expanded", "true");
                k.toggleClass("open").trigger("shown.bs.dropdown",
                    g)
            }
            return !1
        }
    };
    k.prototype.keydown = function (c) {
        if (/(38|40|27|32)/.test(c.which)) {
            var d = a(this);
            if (c.preventDefault(), c.stopPropagation(), !d.is(".disabled, :disabled")) {
                var k = b(d), g = k.hasClass("open");
                if (!g && 27 != c.which || g && 27 == c.which)return 27 == c.which && k.find(f).trigger("focus"), d.trigger("click");
                d = k.find('[role="menu"] li:not(.divider):visible a, [role="listbox"] li:not(.divider):visible a');
                d.length && (k = d.index(c.target), 38 == c.which && 0 < k && k--, 40 == c.which && k < d.length - 1 && k++, ~k || (k = 0), d.eq(k).trigger("focus"))
            }
        }
    };
    var g = a.fn.dropdown;
    a.fn.dropdown = function (b) {
        return this.each(function () {
            var c = a(this), f = c.data("bs.dropdown");
            f || c.data("bs.dropdown", f = new k(this));
            "string" == typeof b && f[b].call(c)
        })
    };
    a.fn.dropdown.Constructor = k;
    a.fn.dropdown.noConflict = function () {
        return a.fn.dropdown = g, this
    };
    a(document).on("click.bs.dropdown.data-api", d).on("click.bs.dropdown.data-api", ".dropdown form", function (a) {
        a.stopPropagation()
    }).on("click.bs.dropdown.data-api", f, k.prototype.toggle).on("keydown.bs.dropdown.data-api", f, k.prototype.keydown).on("keydown.bs.dropdown.data-api",
        '[role="menu"]', k.prototype.keydown).on("keydown.bs.dropdown.data-api", '[role="listbox"]', k.prototype.keydown)
}(jQuery);
+function (a) {
    function d(c, d) {
        return this.each(function () {
            var g = a(this), l = g.data("bs.modal"), n = a.extend({}, b.DEFAULTS, g.data(), "object" == typeof c && c);
            l || g.data("bs.modal", l = new b(this, n));
            "string" == typeof c ? l[c](d) : n.show && l.show(d)
        })
    }

    var b = function (b, c) {
        this.options = c;
        this.$body = a(document.body);
        this.$element = a(b);
        this.$backdrop = this.isShown = null;
        this.scrollbarWidth = 0;
        this.options.remote && this.$element.find(".modal-content").load(this.options.remote, a.proxy(function () {
                this.$element.trigger("loaded.bs.modal")
            },
            this))
    };
    b.VERSION = "3.3.0";
    b.TRANSITION_DURATION = 300;
    b.BACKDROP_TRANSITION_DURATION = 150;
    b.DEFAULTS = {backdrop: !0, keyboard: !0, show: !0};
    b.prototype.toggle = function (a) {
        return this.isShown ? this.hide() : this.show(a)
    };
    b.prototype.show = function (c) {
        var d = this, g = a.Event("show.bs.modal", {relatedTarget: c});
        this.$element.trigger(g);
        this.isShown || g.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.$body.addClass("modal-open"), this.setScrollbar(), this.escape(), this.$element.on("click.dismiss.bs.modal",
            '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.backdrop(function () {
            var g = a.support.transition && d.$element.hasClass("fade");
            d.$element.parent().length || d.$element.appendTo(d.$body);
            d.$element.show().scrollTop(0);
            g && d.$element[0].offsetWidth;
            d.$element.addClass("in").attr("aria-hidden", !1);
            d.enforceFocus();
            var n = a.Event("shown.bs.modal", {relatedTarget: c});
            g ? d.$element.find(".modal-dialog").one("bsTransitionEnd", function () {
                d.$element.trigger("focus").trigger(n)
            }).emulateTransitionEnd(b.TRANSITION_DURATION) :
                d.$element.trigger("focus").trigger(n)
        }))
    };
    b.prototype.hide = function (c) {
        c && c.preventDefault();
        c = a.Event("hide.bs.modal");
        this.$element.trigger(c);
        this.isShown && !c.isDefaultPrevented() && (this.isShown = !1, this.escape(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", a.proxy(this.hideModal, this)).emulateTransitionEnd(b.TRANSITION_DURATION) : this.hideModal())
    };
    b.prototype.enforceFocus = function () {
        a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function (a) {
            this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.trigger("focus")
        }, this))
    };
    b.prototype.escape = function () {
        this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", a.proxy(function (a) {
            27 == a.which && this.hide()
        }, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
    };
    b.prototype.hideModal = function () {
        var a = this;
        this.$element.hide();
        this.backdrop(function () {
            a.$body.removeClass("modal-open");
            a.resetScrollbar();
            a.$element.trigger("hidden.bs.modal")
        })
    };
    b.prototype.removeBackdrop = function () {
        this.$backdrop && this.$backdrop.remove();
        this.$backdrop = null
    };
    b.prototype.backdrop = function (c) {
        var d = this, g = this.$element.hasClass("fade") ? "fade" : "";
        if (this.isShown && this.options.backdrop) {
            var l = a.support.transition && g;
            if (this.$backdrop = a('<div class="modal-backdrop ' + g + '" />').prependTo(this.$element).on("click.dismiss.bs.modal", a.proxy(function (a) {
                    a.target ===
                    a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this))
                }, this)), l && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), c)l ? this.$backdrop.one("bsTransitionEnd", c).emulateTransitionEnd(b.BACKDROP_TRANSITION_DURATION) : c()
        } else!this.isShown && this.$backdrop ? (this.$backdrop.removeClass("in"), g = function () {
            d.removeBackdrop();
            c && c()
        }, a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", g).emulateTransitionEnd(b.BACKDROP_TRANSITION_DURATION) :
            g()) : c && c()
    };
    b.prototype.checkScrollbar = function () {
        this.scrollbarWidth = this.measureScrollbar()
    };
    b.prototype.setScrollbar = function () {
        var a = parseInt(this.$body.css("padding-right") || 0, 10);
        this.scrollbarWidth && this.$body.css("padding-right", a + this.scrollbarWidth)
    };
    b.prototype.resetScrollbar = function () {
        this.$body.css("padding-right", "")
    };
    b.prototype.measureScrollbar = function () {
        if (document.body.clientWidth >= window.innerWidth)return 0;
        var a = document.createElement("div");
        a.className = "modal-scrollbar-measure";
        this.$body.append(a);
        var b = a.offsetWidth - a.clientWidth;
        return this.$body[0].removeChild(a), b
    };
    var c = a.fn.modal;
    a.fn.modal = d;
    a.fn.modal.Constructor = b;
    a.fn.modal.noConflict = function () {
        return a.fn.modal = c, this
    };
    a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function (b) {
        var c = a(this), g = c.attr("href"), l = a(c.attr("data-target") || g && g.replace(/.*(?=#[^\s]+$)/, "")), g = l.data("bs.modal") ? "toggle" : a.extend({remote: !/#/.test(g) && g}, l.data(), c.data());
        c.is("a") && b.preventDefault();
        l.one("show.bs.modal",
            function (a) {
                a.isDefaultPrevented() || l.one("hidden.bs.modal", function () {
                    c.is(":visible") && c.trigger("focus")
                })
            });
        d.call(l, g, this)
    })
}(jQuery);
+function (a) {
    var d = function (a, b) {
        this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null;
        this.init("tooltip", a, b)
    };
    d.VERSION = "3.3.0";
    d.TRANSITION_DURATION = 150;
    d.DEFAULTS = {
        animation: !0,
        placement: "top",
        selector: !1,
        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
        trigger: "hover focus",
        title: "",
        delay: 0,
        html: !1,
        container: !1,
        viewport: {selector: "body", padding: 0}
    };
    d.prototype.init = function (b, f, d) {
        this.enabled = !0;
        this.type = b;
        this.$element = a(f);
        this.options = this.getOptions(d);
        this.$viewport = this.options.viewport && a(this.options.viewport.selector || this.options.viewport);
        b = this.options.trigger.split(" ");
        for (f = b.length; f--;)if (d = b[f], "click" == d)this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this)); else if ("manual" != d) {
            var g = "hover" == d ? "mouseleave" : "focusout";
            this.$element.on(("hover" == d ? "mouseenter" : "focusin") + "." + this.type, this.options.selector, a.proxy(this.enter, this));
            this.$element.on(g +
                "." + this.type, this.options.selector, a.proxy(this.leave, this))
        }
        this.options.selector ? this._options = a.extend({}, this.options, {
            trigger: "manual",
            selector: ""
        }) : this.fixTitle()
    };
    d.prototype.getDefaults = function () {
        return d.DEFAULTS
    };
    d.prototype.getOptions = function (b) {
        return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = {
            show: b.delay,
            hide: b.delay
        }), b
    };
    d.prototype.getDelegateOptions = function () {
        var b = {}, f = this.getDefaults();
        return this._options && a.each(this._options,
            function (a, d) {
                f[a] != d && (b[a] = d)
            }), b
    };
    d.prototype.enter = function (b) {
        var f = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
        return f && f.$tip && f.$tip.is(":visible") ? void(f.hoverState = "in") : (f || (f = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, f)), clearTimeout(f.timeout), f.hoverState = "in", f.options.delay && f.options.delay.show ? void(f.timeout = setTimeout(function () {
            "in" == f.hoverState && f.show()
        }, f.options.delay.show)) : f.show())
    };
    d.prototype.leave = function (b) {
        var f = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
        return f || (f = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, f)), clearTimeout(f.timeout), f.hoverState = "out", f.options.delay && f.options.delay.hide ? void(f.timeout = setTimeout(function () {
            "out" == f.hoverState && f.hide()
        }, f.options.delay.hide)) : f.hide()
    };
    d.prototype.show = function () {
        var b = a.Event("show.bs." + this.type);
        if (this.hasContent() && this.enabled) {
            this.$element.trigger(b);
            var f = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
            if (!b.isDefaultPrevented() && f) {
                var k = this, b = this.tip(), f = this.getUID(this.type);
                this.setContent();
                b.attr("id", f);
                this.$element.attr("aria-describedby", f);
                this.options.animation && b.addClass("fade");
                var f = "function" == typeof this.options.placement ? this.options.placement.call(this, b[0], this.$element[0]) : this.options.placement, g = /\s?auto?\s?/i, l = g.test(f);
                l && (f = f.replace(g, "") || "top");
                b.detach().css({top: 0, left: 0, display: "block"}).addClass(f).data("bs." +
                    this.type, this);
                this.options.container ? b.appendTo(this.options.container) : b.insertAfter(this.$element);
                var g = this.getPosition(), n = b[0].offsetWidth, q = b[0].offsetHeight;
                if (l) {
                    var l = f, t = this.options.container ? a(this.options.container) : this.$element.parent(), t = this.getPosition(t), f = "bottom" == f && g.bottom + q > t.bottom ? "top" : "top" == f && g.top - q < t.top ? "bottom" : "right" == f && g.right + n > t.width ? "left" : "left" == f && g.left - n < t.left ? "right" : f;
                    b.removeClass(l).addClass(f)
                }
                g = this.getCalculatedOffset(f, g, n, q);
                this.applyPlacement(g,
                    f);
                f = function () {
                    var a = k.hoverState;
                    k.$element.trigger("shown.bs." + k.type);
                    k.hoverState = null;
                    "out" == a && k.leave(k)
                };
                a.support.transition && this.$tip.hasClass("fade") ? b.one("bsTransitionEnd", f).emulateTransitionEnd(d.TRANSITION_DURATION) : f()
            }
        }
    };
    d.prototype.applyPlacement = function (b, f) {
        var d = this.tip(), g = d[0].offsetWidth, l = d[0].offsetHeight, n = parseInt(d.css("margin-top"), 10), q = parseInt(d.css("margin-left"), 10);
        isNaN(n) && (n = 0);
        isNaN(q) && (q = 0);
        b.top += n;
        b.left += q;
        a.offset.setOffset(d[0], a.extend({
            using: function (a) {
                d.css({
                    top: Math.round(a.top),
                    left: Math.round(a.left)
                })
            }
        }, b), 0);
        d.addClass("in");
        var q = d[0].offsetWidth, t = d[0].offsetHeight;
        "top" == f && t != l && (b.top = b.top + l - t);
        var v = this.getViewportAdjustedDelta(f, b, q, t);
        v.left ? b.left += v.left : b.top += v.top;
        g = (n = /top|bottom/.test(f)) ? 2 * v.left - g + q : 2 * v.top - l + t;
        l = n ? "offsetWidth" : "offsetHeight";
        d.offset(b);
        this.replaceArrow(g, d[0][l], n)
    };
    d.prototype.replaceArrow = function (a, b, d) {
        this.arrow().css(d ? "left" : "top", 50 * (1 - a / b) + "%").css(d ? "top" : "left", "")
    };
    d.prototype.setContent = function () {
        var a = this.tip(),
            b = this.getTitle();
        a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b);
        a.removeClass("fade in top bottom left right")
    };
    d.prototype.hide = function (b) {
        function f() {
            "in" != k.hoverState && g.detach();
            k.$element.removeAttr("aria-describedby").trigger("hidden.bs." + k.type);
            b && b()
        }

        var k = this, g = this.tip(), l = a.Event("hide.bs." + this.type);
        return this.$element.trigger(l), l.isDefaultPrevented() ? void 0 : (g.removeClass("in"), a.support.transition && this.$tip.hasClass("fade") ? g.one("bsTransitionEnd", f).emulateTransitionEnd(d.TRANSITION_DURATION) :
            f(), this.hoverState = null, this)
    };
    d.prototype.fixTitle = function () {
        var a = this.$element;
        (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
    };
    d.prototype.hasContent = function () {
        return this.getTitle()
    };
    d.prototype.getPosition = function (b) {
        b = b || this.$element;
        var f = b[0], d = "BODY" == f.tagName, f = f.getBoundingClientRect();
        null == f.width && (f = a.extend({}, f, {width: f.right - f.left, height: f.bottom - f.top}));
        var g = d ? {top: 0, left: 0} : b.offset();
        b = {scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop()};
        d = d ? {width: a(window).width(), height: a(window).height()} : null;
        return a.extend({}, f, b, d, g)
    };
    d.prototype.getCalculatedOffset = function (a, b, d, g) {
        return "bottom" == a ? {
            top: b.top + b.height,
            left: b.left + b.width / 2 - d / 2
        } : "top" == a ? {
            top: b.top - g,
            left: b.left + b.width / 2 - d / 2
        } : "left" == a ? {top: b.top + b.height / 2 - g / 2, left: b.left - d} : {
            top: b.top + b.height / 2 - g / 2,
            left: b.left + b.width
        }
    };
    d.prototype.getViewportAdjustedDelta = function (a, b, d, g) {
        var l =
        {top: 0, left: 0};
        if (!this.$viewport)return l;
        var n = this.options.viewport && this.options.viewport.padding || 0, q = this.getPosition(this.$viewport);
        /right|left/.test(a) ? (d = b.top - n - q.scroll, b = b.top + n - q.scroll + g, d < q.top ? l.top = q.top - d : b > q.top + q.height && (l.top = q.top + q.height - b)) : (g = b.left - n, b = b.left + n + d, g < q.left ? l.left = q.left - g : b > q.width && (l.left = q.left + q.width - b));
        return l
    };
    d.prototype.getTitle = function () {
        var a = this.$element, b = this.options;
        return a.attr("data-original-title") || ("function" == typeof b.title ? b.title.call(a[0]) :
                b.title)
    };
    d.prototype.getUID = function (a) {
        do a += ~~(1E6 * Math.random()); while (document.getElementById(a));
        return a
    };
    d.prototype.tip = function () {
        return this.$tip = this.$tip || a(this.options.template)
    };
    d.prototype.arrow = function () {
        return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
    };
    d.prototype.enable = function () {
        this.enabled = !0
    };
    d.prototype.disable = function () {
        this.enabled = !1
    };
    d.prototype.toggleEnabled = function () {
        this.enabled = !this.enabled
    };
    d.prototype.toggle = function (b) {
        var f = this;
        b && (f = a(b.currentTarget).data("bs." +
            this.type), f || (f = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, f)));
        f.tip().hasClass("in") ? f.leave(f) : f.enter(f)
    };
    d.prototype.destroy = function () {
        var a = this;
        clearTimeout(this.timeout);
        this.hide(function () {
            a.$element.off("." + a.type).removeData("bs." + a.type)
        })
    };
    var b = a.fn.tooltip;
    a.fn.tooltip = function (b) {
        return this.each(function () {
            var f = a(this), k = f.data("bs.tooltip"), g = "object" == typeof b && b, l = g && g.selector;
            (k || "destroy" != b) && (l ? (k || f.data("bs.tooltip",
                k = {}), k[l] || (k[l] = new d(this, g))) : k || f.data("bs.tooltip", k = new d(this, g)), "string" == typeof b && k[b]())
        })
    };
    a.fn.tooltip.Constructor = d;
    a.fn.tooltip.noConflict = function () {
        return a.fn.tooltip = b, this
    }
}(jQuery);
+function (a) {
    var d = function (a, b) {
        this.init("popover", a, b)
    };
    if (!a.fn.tooltip)throw Error("Popover requires tooltip.js");
    d.VERSION = "3.3.0";
    d.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
        placement: "right",
        trigger: "click",
        content: "",
        template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title hidden"></h3><div class="popover-content"></div></div>'
    });
    d.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype);
    d.prototype.constructor = d;
    d.prototype.getDefaults =
        function () {
            return d.DEFAULTS
        };
    d.prototype.setContent = function () {
        var a = this.tip(), b = this.getTitle(), d = this.getContent();
        a.find(".popover-title")[this.options.html ? "html" : "text"](b);
        a.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof d ? "html" : "append" : "text"](d);
        a.removeClass("fade top bottom left right in");
        a.find(".popover-title").html() || a.find(".popover-title").hide()
    };
    d.prototype.hasContent = function () {
        return this.getTitle() || this.getContent()
    };
    d.prototype.getContent =
        function () {
            var a = this.$element, b = this.options;
            return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
        };
    d.prototype.arrow = function () {
        return this.$arrow = this.$arrow || this.tip().find(".arrow")
    };
    d.prototype.tip = function () {
        return this.$tip || (this.$tip = a(this.options.template)), this.$tip
    };
    var b = a.fn.popover;
    a.fn.popover = function (b) {
        return this.each(function () {
            var f = a(this), k = f.data("bs.popover"), g = "object" == typeof b && b, l = g && g.selector;
            (k || "destroy" != b) && (l ? (k || f.data("bs.popover",
                k = {}), k[l] || (k[l] = new d(this, g))) : k || f.data("bs.popover", k = new d(this, g)), "string" == typeof b && k[b]())
        })
    };
    a.fn.popover.Constructor = d;
    a.fn.popover.noConflict = function () {
        return a.fn.popover = b, this
    }
}(jQuery);
+function (a) {
    function d(c) {
        return this.each(function () {
            var f = a(this), d = f.data("bs.tab");
            d || f.data("bs.tab", d = new b(this));
            "string" == typeof c && d[c]()
        })
    }

    var b = function (b) {
        this.element = a(b)
    };
    b.VERSION = "3.3.0";
    b.TRANSITION_DURATION = 150;
    b.prototype.show = function () {
        var b = this.element, c = b.closest("ul:not(.dropdown-menu)"), f = b.data("target");
        if (f || (f = b.attr("href"), f = f && f.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
            var d = c.find(".active:last a"), q = a.Event("hide.bs.tab", {relatedTarget: b[0]}),
                t = a.Event("show.bs.tab", {relatedTarget: d[0]});
            (d.trigger(q), b.trigger(t), t.isDefaultPrevented() || q.isDefaultPrevented()) || (f = a(f), this.activate(b.closest("li"), c), this.activate(f, f.parent(), function () {
                d.trigger({type: "hidden.bs.tab", relatedTarget: b[0]});
                b.trigger({type: "shown.bs.tab", relatedTarget: d[0]})
            }))
        }
    };
    b.prototype.activate = function (c, f, d) {
        function n() {
            q.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1);
            c.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0);
            t ? (c[0].offsetWidth, c.addClass("in")) : c.removeClass("fade");
            c.parent(".dropdown-menu") && c.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0);
            d && d()
        }

        var q = f.find("> .active"), t = d && a.support.transition && (q.length && q.hasClass("fade") || !!f.find("> .fade").length);
        q.length && t ? q.one("bsTransitionEnd", n).emulateTransitionEnd(b.TRANSITION_DURATION) : n();
        q.removeClass("in")
    };
    var c = a.fn.tab;
    a.fn.tab = d;
    a.fn.tab.Constructor = b;
    a.fn.tab.noConflict = function () {
        return a.fn.tab = c, this
    };
    var f = function (b) {
        b.preventDefault();
        d.call(a(this), "show")
    };
    a(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', f).on("click.bs.tab.data-api", '[data-toggle="pill"]', f)
}(jQuery);
+function (a) {
    function d(c) {
        return this.each(function () {
            var d = a(this), g = d.data("bs.affix"), l = "object" == typeof c && c;
            g || d.data("bs.affix", g = new b(this, l));
            "string" == typeof c && g[c]()
        })
    }

    var b = function (c, d) {
        this.options = a.extend({}, b.DEFAULTS, d);
        this.$target = a(this.options.target).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this));
        this.$element = a(c);
        this.affixed = this.unpin = this.pinnedOffset = null;
        this.checkPosition()
    };
    b.VERSION = "3.3.0";
    b.RESET = "affix affix-top affix-bottom";
    b.DEFAULTS = {offset: 0, target: window};
    b.prototype.getState = function (a, b, c, d) {
        var n = this.$target.scrollTop(), q = this.$element.offset(), t = this.$target.height();
        if (null != c && "top" == this.affixed)return c > n ? "top" : !1;
        if ("bottom" == this.affixed)return null != c ? n + this.unpin <= q.top ? !1 : "bottom" : a - d >= n + t ? !1 : "bottom";
        var v = null == this.affixed, n = v ? n : q.top;
        return null != c && c >= n ? "top" : null != d && n + (v ? t : b) >= a - d ? "bottom" : !1
    };
    b.prototype.getPinnedOffset = function () {
        if (this.pinnedOffset)return this.pinnedOffset;
        this.$element.removeClass(b.RESET).addClass("affix");
        var a = this.$target.scrollTop();
        return this.pinnedOffset = this.$element.offset().top - a
    };
    b.prototype.checkPositionWithEventLoop = function () {
        setTimeout(a.proxy(this.checkPosition, this), 1)
    };
    b.prototype.checkPosition = function () {
        if (this.$element.is(":visible")) {
            var c = this.$element.height(), d = this.options.offset, g = d.top, l = d.bottom, n = a("body").height();
            "object" != typeof d && (l = g = d);
            "function" == typeof g && (g = d.top(this.$element));
            "function" == typeof l && (l = d.bottom(this.$element));
            d = this.getState(n, c, g, l);
            if (this.affixed != d) {
                null != this.unpin && this.$element.css("top", "");
                var g = "affix" + (d ? "-" + d : ""), q = a.Event(g + ".bs.affix");
                if (this.$element.trigger(q), q.isDefaultPrevented())return;
                this.affixed = d;
                this.unpin = "bottom" == d ? this.getPinnedOffset() : null;
                this.$element.removeClass(b.RESET).addClass(g).trigger(g.replace("affix", "affixed") + ".bs.affix")
            }
            "bottom" == d && this.$element.offset({top: n - c - l})
        }
    };
    var c = a.fn.affix;
    a.fn.affix = d;
    a.fn.affix.Constructor = b;
    a.fn.affix.noConflict = function () {
        return a.fn.affix =
            c, this
    };
    a(window).on("load", function () {
        a('[data-spy="affix"]').each(function () {
            var b = a(this), c = b.data();
            c.offset = c.offset || {};
            null != c.offsetBottom && (c.offset.bottom = c.offsetBottom);
            null != c.offsetTop && (c.offset.top = c.offsetTop);
            d.call(b, c)
        })
    })
}(jQuery);
+function (a) {
    function d(b) {
        var c;
        b = b.attr("data-target") || (c = b.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "");
        return a(b)
    }

    function b(b) {
        return this.each(function () {
            var f = a(this), d = f.data("bs.collapse"), n = a.extend({}, c.DEFAULTS, f.data(), "object" == typeof b && b);
            !d && n.toggle && "show" == b && (n.toggle = !1);
            d || f.data("bs.collapse", d = new c(this, n));
            "string" == typeof b && d[b]()
        })
    }

    var c = function (b, f) {
        this.$element = a(b);
        this.options = a.extend({}, c.DEFAULTS, f);
        this.$trigger = a(this.options.trigger).filter('[href="#' +
            b.id + '"], [data-target="#' + b.id + '"]');
        this.transitioning = null;
        this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger);
        this.options.toggle && this.toggle()
    };
    c.VERSION = "3.3.0";
    c.TRANSITION_DURATION = 350;
    c.DEFAULTS = {toggle: !0, trigger: '[data-toggle="collapse"]'};
    c.prototype.dimension = function () {
        return this.$element.hasClass("width") ? "width" : "height"
    };
    c.prototype.show = function () {
        if (!this.transitioning && !this.$element.hasClass("in")) {
            var f, d = this.$parent &&
                this.$parent.find("> .panel").children(".in, .collapsing");
            if (!(d && d.length && (f = d.data("bs.collapse"), f && f.transitioning))) {
                var l = a.Event("show.bs.collapse");
                if (this.$element.trigger(l), !l.isDefaultPrevented()) {
                    d && d.length && (b.call(d, "hide"), f || d.data("bs.collapse", null));
                    var n = this.dimension();
                    this.$element.removeClass("collapse").addClass("collapsing")[n](0).attr("aria-expanded", !0);
                    this.$trigger.removeClass("collapsed").attr("aria-expanded", !0);
                    this.transitioning = 1;
                    f = function () {
                        this.$element.removeClass("collapsing").addClass("collapse in")[n]("");
                        this.transitioning = 0;
                        this.$element.trigger("shown.bs.collapse")
                    };
                    if (!a.support.transition)return f.call(this);
                    d = a.camelCase(["scroll", n].join("-"));
                    this.$element.one("bsTransitionEnd", a.proxy(f, this)).emulateTransitionEnd(c.TRANSITION_DURATION)[n](this.$element[0][d])
                }
            }
        }
    };
    c.prototype.hide = function () {
        if (!this.transitioning && this.$element.hasClass("in")) {
            var b = a.Event("hide.bs.collapse");
            if (this.$element.trigger(b), !b.isDefaultPrevented()) {
                b = this.dimension();
                this.$element[b](this.$element[b]())[0].offsetHeight;
                this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1);
                this.$trigger.addClass("collapsed").attr("aria-expanded", !1);
                this.transitioning = 1;
                var f = function () {
                    this.transitioning = 0;
                    this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
                };
                return a.support.transition ? void this.$element[b](0).one("bsTransitionEnd", a.proxy(f, this)).emulateTransitionEnd(c.TRANSITION_DURATION) : f.call(this)
            }
        }
    };
    c.prototype.toggle = function () {
        this[this.$element.hasClass("in") ?
            "hide" : "show"]()
    };
    c.prototype.getParent = function () {
        return a(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(a.proxy(function (b, c) {
            var f = a(c);
            this.addAriaAndCollapsedClass(d(f), f)
        }, this)).end()
    };
    c.prototype.addAriaAndCollapsedClass = function (a, b) {
        var c = a.hasClass("in");
        a.attr("aria-expanded", c);
        b.toggleClass("collapsed", !c).attr("aria-expanded", c)
    };
    var f = a.fn.collapse;
    a.fn.collapse = b;
    a.fn.collapse.Constructor = c;
    a.fn.collapse.noConflict = function () {
        return a.fn.collapse =
            f, this
    };
    a(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function (c) {
        var f = a(this);
        f.attr("data-target") || c.preventDefault();
        c = d(f);
        f = c.data("bs.collapse") ? "toggle" : a.extend({}, f.data(), {trigger: this});
        b.call(c, f)
    })
}(jQuery);
+function (a) {
    function d(b, c) {
        var g = a.proxy(this.process, this);
        this.$body = a("body");
        this.$scrollElement = a(a(b).is("body") ? window : b);
        this.options = a.extend({}, d.DEFAULTS, c);
        this.selector = (this.options.target || "") + " .nav li > a";
        this.offsets = [];
        this.targets = [];
        this.activeTarget = null;
        this.scrollHeight = 0;
        this.$scrollElement.on("scroll.bs.scrollspy", g);
        this.refresh();
        this.process()
    }

    function b(b) {
        return this.each(function () {
            var c = a(this), g = c.data("bs.scrollspy"), l = "object" == typeof b && b;
            g || c.data("bs.scrollspy",
                g = new d(this, l));
            "string" == typeof b && g[b]()
        })
    }

    d.VERSION = "3.3.0";
    d.DEFAULTS = {offset: 10};
    d.prototype.getScrollHeight = function () {
        return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
    };
    d.prototype.refresh = function () {
        var b = "offset", c = 0;
        a.isWindow(this.$scrollElement[0]) || (b = "position", c = this.$scrollElement.scrollTop());
        this.offsets = [];
        this.targets = [];
        this.scrollHeight = this.getScrollHeight();
        var d = this;
        this.$body.find(this.selector).map(function () {
            var d =
                a(this), d = d.data("target") || d.attr("href"), g = /^#./.test(d) && a(d);
            return g && g.length && g.is(":visible") && [[g[b]().top + c, d]] || null
        }).sort(function (a, b) {
            return a[0] - b[0]
        }).each(function () {
            d.offsets.push(this[0]);
            d.targets.push(this[1])
        })
    };
    d.prototype.process = function () {
        var a, b = this.$scrollElement.scrollTop() + this.options.offset, c = this.getScrollHeight(), d = this.options.offset + c - this.$scrollElement.height(), n = this.offsets, q = this.targets, t = this.activeTarget;
        if (this.scrollHeight != c && this.refresh(), b >= d)return t !=
            (a = q[q.length - 1]) && this.activate(a);
        if (t && b < n[0])return this.activeTarget = null, this.clear();
        for (a = n.length; a--;)t != q[a] && b >= n[a] && (!n[a + 1] || b <= n[a + 1]) && this.activate(q[a])
    };
    d.prototype.activate = function (b) {
        this.activeTarget = b;
        this.clear();
        b = a(this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]').parents("li").addClass("active");
        b.parent(".dropdown-menu").length && (b = b.closest("li.dropdown").addClass("active"));
        b.trigger("activate.bs.scrollspy")
    };
    d.prototype.clear = function () {
        a(this.selector).parentsUntil(this.options.target,
            ".active").removeClass("active")
    };
    var c = a.fn.scrollspy;
    a.fn.scrollspy = b;
    a.fn.scrollspy.Constructor = d;
    a.fn.scrollspy.noConflict = function () {
        return a.fn.scrollspy = c, this
    };
    a(window).on("load.bs.scrollspy.data-api", function () {
        a('[data-spy="scroll"]').each(function () {
            var c = a(this);
            b.call(c, c.data())
        })
    })
}(jQuery);
+function (a) {
    function d() {
        var a = document.createElement("bootstrap"), c = {
            WebkitTransition: "webkitTransitionEnd",
            MozTransition: "transitionend",
            OTransition: "oTransitionEnd otransitionend",
            transition: "transitionend"
        }, f;
        for (f in c)if (void 0 !== a.style[f])return {end: c[f]};
        return !1
    }

    a.fn.emulateTransitionEnd = function (b) {
        var c = !1, f = this;
        a(this).one("bsTransitionEnd", function () {
            c = !0
        });
        return setTimeout(function () {
            c || a(f).trigger(a.support.transition.end)
        }, b), this
    };
    a(function () {
        a.support.transition = d();
        a.support.transition &&
        (a.event.special.bsTransitionEnd = {
            bindType: a.support.transition.end,
            delegateType: a.support.transition.end,
            handle: function (b) {
                return a(b.target).is(this) ? b.handleObj.handler.apply(this, arguments) : void 0
            }
        })
    })
}(jQuery);
window.define || (window.define = function (a) {
    try {
        delete window.define
    } catch (d) {
        window.define = void 0
    }
    window.when = a()
}, window.define.amd = {});
(function (a) {
    a || (a = window.console = {
        log: function (a, b, c, f, k) {
        }, info: function (a, b, c, f, k) {
        }, warn: function (a, b, c, f, k) {
        }, error: function (a, b, c, f, k) {
        }
    });
    Function.prototype.bind || (Function.prototype.bind = function (a) {
        var b = this, c = Array.prototype.slice.call(arguments, 1);
        return function () {
            return b.apply(a, Array.prototype.concat.apply(c, arguments))
        }
    });
    "object" === typeof a.log && (a.log = Function.prototype.call.bind(a.log, a), a.info = Function.prototype.call.bind(a.info, a), a.warn = Function.prototype.call.bind(a.warn, a),
        a.error = Function.prototype.call.bind(a.error, a));
    "group" in a || (a.group = function (d) {
        a.info("\n--- " + d + " ---\n")
    });
    "groupEnd" in a || (a.groupEnd = function () {
        a.log("\n")
    });
    "time" in a || function () {
        var d = {};
        a.time = function (a) {
            d[a] = (new Date).getTime()
        };
        a.timeEnd = function (b) {
            var c = (new Date).getTime();
            a.info(b + ": " + (b in d ? c - d[b] : 0) + "ms")
        }
    }()
})(window.console);
(function (a) {
    a(function (a) {
        function b(a, e, b, h) {
            return (a instanceof f ? a : k(a)).then(e, b, h)
        }

        function c(a) {
            return new f(a, Q.PromiseStatus && Q.PromiseStatus())
        }

        function f(a, b) {
            function h(a) {
                if (r) {
                    var c = r;
                    r = E;
                    A(function () {
                        d = l(p, a);
                        b && e(d, b);
                        g(c, d)
                    })
                }
            }

            function c(a) {
                h(new t(a))
            }

            function f(a) {
                if (r) {
                    var e = r;
                    A(function () {
                        g(e, new v(a))
                    })
                }
            }

            var p, d, r = [];
            p = this;
            this._status = b;
            this.inspect = function () {
                return d ? d.inspect() : {state: "pending"}
            };
            this._when = function (a, e, b, h, c) {
                function f(p) {
                    p._when(a, e, b, h, c)
                }

                r ? r.push(f) :
                    A(function () {
                        f(d)
                    })
            };
            try {
                a(h, c, f)
            } catch (k) {
                c(k)
            }
        }

        function k(a) {
            return c(function (e) {
                e(a)
            })
        }

        function g(a, e) {
            for (var b = 0; b < a.length; b++)a[b](e)
        }

        function l(a, e) {
            if (e === a)return new t(new TypeError);
            if (e instanceof f)return e;
            try {
                var b = e === Object(e) && e.then;
                return "function" === typeof b ? n(b, e) : new q(e)
            } catch (h) {
                return new t(h)
            }
        }

        function n(a, e) {
            return c(function (b, h) {
                x(a, e, b, h)
            })
        }

        function q(a) {
            this.value = a
        }

        function t(a) {
            this.value = a
        }

        function v(a) {
            this.value = a
        }

        function e(a, e) {
            a.then(function () {
                    e.fulfilled()
                },
                function (a) {
                    e.rejected(a)
                })
        }

        function h(a) {
            return a && "function" === typeof a.then
        }

        function p(a, e, h, f, p) {
            return b(a, function (a) {
                return c(function (h, c, f) {
                    function p(a) {
                        n(a)
                    }

                    function d(a) {
                        u(a)
                    }

                    var r, g, k, l, u, n, q, t;
                    q = a.length >>> 0;
                    r = Math.max(0, Math.min(e, q));
                    k = [];
                    g = q - r + 1;
                    l = [];
                    if (r)for (n = function (a) {
                        l.push(a);
                        --g || (u = n = J, c(l))
                    }, u = function (a) {
                        k.push(a);
                        --r || (u = n = J, h(k))
                    }, t = 0; t < q; ++t)t in a && b(a[t], d, p, f); else h(k)
                }).then(h, f, p)
            })
        }

        function r(a, e, b, h) {
            return u(a, J).then(e, b, h)
        }

        function u(a, e, h) {
            return b(a, function (a) {
                return new f(function (c,
                                       f, p) {
                    function d(a, g) {
                        b(a, e, h).then(function (a) {
                            r[g] = a;
                            --k || c(r)
                        }, f, p)
                    }

                    var r, g, k, l;
                    k = g = a.length >>> 0;
                    r = [];
                    if (k)for (l = 0; l < g; l++)l in a ? d(a[l], l) : --k; else c(r)
                })
            })
        }

        function G(a) {
            return {state: "fulfilled", value: a}
        }

        function B(a) {
            return {state: "rejected", reason: a}
        }

        function A(a) {
            1 === K.push(a) && H(F)
        }

        function F() {
            g(K);
            K = []
        }

        function J(a) {
            return a
        }

        function aa(a) {
            "function" === typeof Q.reportUnhandled ? Q.reportUnhandled() : A(function () {
                throw a;
            });
            throw a;
        }

        b.promise = c;
        b.resolve = k;
        b.reject = function (a) {
            return b(a, function (a) {
                return new t(a)
            })
        };
        b.defer = function () {
            var a, e, b;
            a = {promise: E, resolve: E, reject: E, notify: E, resolver: {resolve: E, reject: E, notify: E}};
            a.promise = e = c(function (h, c, f) {
                a.resolve = a.resolver.resolve = function (a) {
                    if (b)return k(a);
                    b = !0;
                    h(a);
                    return e
                };
                a.reject = a.resolver.reject = function (a) {
                    if (b)return k(new t(a));
                    b = !0;
                    c(a);
                    return e
                };
                a.notify = a.resolver.notify = function (a) {
                    f(a);
                    return a
                }
            });
            return a
        };
        b.join = function () {
            return u(arguments, J)
        };
        b.all = r;
        b.map = function (a, e) {
            return u(a, e)
        };
        b.reduce = function (a, e) {
            var h = x(w, arguments, 1);
            return b(a,
                function (a) {
                    var c;
                    c = a.length;
                    h[0] = function (a, h, f) {
                        return b(a, function (a) {
                            return b(h, function (b) {
                                return e(a, b, f, c)
                            })
                        })
                    };
                    return I.apply(a, h)
                })
        };
        b.settle = function (a) {
            return u(a, G, B)
        };
        b.any = function (a, e, b, h) {
            return p(a, 1, function (a) {
                return e ? e(a[0]) : a[0]
            }, b, h)
        };
        b.some = p;
        b.isPromise = h;
        b.isPromiseLike = h;
        z = f.prototype;
        z.then = function (a, e, b) {
            var h = this;
            return new f(function (c, f, p) {
                h._when(c, p, a, e, b)
            }, this._status && this._status.observed())
        };
        z["catch"] = z.otherwise = function (a) {
            return this.then(E, a)
        };
        z["finally"] =
            z.ensure = function (a) {
                function e() {
                    return k(a())
                }

                return "function" === typeof a ? this.then(e, e).yield(this) : this
            };
        z.done = function (a, e) {
            this.then(a, e)["catch"](aa)
        };
        z.yield = function (a) {
            return this.then(function () {
                return a
            })
        };
        z.tap = function (a) {
            return this.then(a).yield(this)
        };
        z.spread = function (a) {
            return this.then(function (e) {
                return r(e, function (e) {
                    return a.apply(E, e)
                })
            })
        };
        z.always = function (a, e) {
            return this.then(a, a, e)
        };
        R = Object.create || function (a) {
                function e() {
                }

                e.prototype = a;
                return new e
            };
        q.prototype = R(z);
        q.prototype.inspect = function () {
            return G(this.value)
        };
        q.prototype._when = function (a, e, b) {
            try {
                a("function" === typeof b ? b(this.value) : this.value)
            } catch (h) {
                a(new t(h))
            }
        };
        t.prototype = R(z);
        t.prototype.inspect = function () {
            return B(this.value)
        };
        t.prototype._when = function (a, e, b, h) {
            try {
                a("function" === typeof h ? h(this.value) : this)
            } catch (c) {
                a(new t(c))
            }
        };
        v.prototype = R(z);
        v.prototype._when = function (a, e, b, h, c) {
            try {
                e("function" === typeof c ? c(this.value) : this.value)
            } catch (f) {
                e(f)
            }
        };
        var z, R, I, w, x, H, K, Q, W, E;
        K = [];
        Q = "undefined" !== typeof console ? console : b;
        if ("object" === typeof process && process.nextTick)H = process.nextTick; else if (z = "function" === typeof MutationObserver && MutationObserver || "function" === typeof WebKitMutationObserver && WebKitMutationObserver)H = function (a, e, b) {
            var h = a.createElement("div");
            (new e(b)).observe(h, {attributes: !0});
            return function () {
                h.setAttribute("x", "x")
            }
        }(document, z, F); else try {
            H = a("vertx").runOnLoop || a("vertx").runOnContext
        } catch (S) {
            W = setTimeout, H = function (a) {
                W(a, 0)
            }
        }
        a = Function.prototype;
        z = a.call;
        x = a.bind ?
            z.bind(z) : function (a, e) {
            return a.apply(e, w.call(arguments, 2))
        };
        a = [];
        w = a.slice;
        I = a.reduce || function (a) {
                var e, b, h, c;
                c = 0;
                e = Object(this);
                h = e.length >>> 0;
                b = arguments;
                if (1 >= b.length)for (; ;) {
                    if (c in e) {
                        b = e[c++];
                        break
                    }
                    if (++c >= h)throw new TypeError;
                } else b = b[1];
                for (; c < h; ++c)c in e && (b = a(b, e[c], c, e));
                return b
            };
        return b
    })
})("function" === typeof define && define.amd ? define : function (a) {
    module.exports = a(require)
});
var CryptoJS = CryptoJS || function (a, d) {
        var b = {}, c = b.lib = {}, f = c.Base = function () {
            function a() {
            }

            return {
                extend: function (b) {
                    a.prototype = this;
                    var c = new a;
                    b && c.mixIn(b);
                    c.hasOwnProperty("init") || (c.init = function () {
                        c.$super.init.apply(this, arguments)
                    });
                    c.init.prototype = c;
                    c.$super = this;
                    return c
                }, create: function () {
                    var a = this.extend();
                    a.init.apply(a, arguments);
                    return a
                }, init: function () {
                }, mixIn: function (a) {
                    for (var e in a)a.hasOwnProperty(e) && (this[e] = a[e]);
                    a.hasOwnProperty("toString") && (this.toString = a.toString)
                },
                clone: function () {
                    return this.init.prototype.extend(this)
                }
            }
        }(), k = c.WordArray = f.extend({
            init: function (a, b) {
                a = this.words = a || [];
                this.sigBytes = b != d ? b : 4 * a.length
            }, toString: function (a) {
                return (a || l).stringify(this)
            }, concat: function (a) {
                var b = this.words, c = a.words, f = this.sigBytes;
                a = a.sigBytes;
                this.clamp();
                if (f % 4)for (var d = 0; d < a; d++)b[f + d >>> 2] |= (c[d >>> 2] >>> 24 - d % 4 * 8 & 255) << 24 - (f + d) % 4 * 8; else if (65535 < c.length)for (d = 0; d < a; d += 4)b[f + d >>> 2] = c[d >>> 2]; else b.push.apply(b, c);
                this.sigBytes += a;
                return this
            }, clamp: function () {
                var e =
                    this.words, b = this.sigBytes;
                e[b >>> 2] &= 4294967295 << 32 - b % 4 * 8;
                e.length = a.ceil(b / 4)
            }, clone: function () {
                var a = f.clone.call(this);
                a.words = this.words.slice(0);
                return a
            }, random: function (e) {
                for (var b = [], c = 0; c < e; c += 4)b.push(4294967296 * a.random() | 0);
                return new k.init(b, e)
            }
        }), g = b.enc = {}, l = g.Hex = {
            stringify: function (a) {
                var b = a.words;
                a = a.sigBytes;
                for (var c = [], f = 0; f < a; f++) {
                    var d = b[f >>> 2] >>> 24 - f % 4 * 8 & 255;
                    c.push((d >>> 4).toString(16));
                    c.push((d & 15).toString(16))
                }
                return c.join("")
            }, parse: function (a) {
                for (var b = a.length,
                         c = [], f = 0; f < b; f += 2)c[f >>> 3] |= parseInt(a.substr(f, 2), 16) << 24 - f % 8 * 4;
                return new k.init(c, b / 2)
            }
        }, n = g.Latin1 = {
            stringify: function (a) {
                var b = a.words;
                a = a.sigBytes;
                for (var c = [], f = 0; f < a; f++)c.push(String.fromCharCode(b[f >>> 2] >>> 24 - f % 4 * 8 & 255));
                return c.join("")
            }, parse: function (a) {
                for (var b = a.length, c = [], f = 0; f < b; f++)c[f >>> 2] |= (a.charCodeAt(f) & 255) << 24 - f % 4 * 8;
                return new k.init(c, b)
            }
        }, q = g.Utf8 = {
            stringify: function (a) {
                try {
                    return decodeURIComponent(escape(n.stringify(a)))
                } catch (b) {
                    throw Error("Malformed UTF-8 data");
                }
            }, parse: function (a) {
                return n.parse(unescape(encodeURIComponent(a)))
            }
        }, t = c.BufferedBlockAlgorithm = f.extend({
            reset: function () {
                this._data = new k.init;
                this._nDataBytes = 0
            }, _append: function (a) {
                "string" == typeof a && (a = q.parse(a));
                this._data.concat(a);
                this._nDataBytes += a.sigBytes
            }, _process: function (e) {
                var b = this._data, c = b.words, f = b.sigBytes, d = this.blockSize, g = f / (4 * d), g = e ? a.ceil(g) : a.max((g | 0) - this._minBufferSize, 0);
                e = g * d;
                f = a.min(4 * e, f);
                if (e) {
                    for (var l = 0; l < e; l += d)this._doProcessBlock(c, l);
                    l = c.splice(0, e);
                    b.sigBytes -=
                        f
                }
                return new k.init(l, f)
            }, clone: function () {
                var a = f.clone.call(this);
                a._data = this._data.clone();
                return a
            }, _minBufferSize: 0
        });
        c.Hasher = t.extend({
            cfg: f.extend(), init: function (a) {
                this.cfg = this.cfg.extend(a);
                this.reset()
            }, reset: function () {
                t.reset.call(this);
                this._doReset()
            }, update: function (a) {
                this._append(a);
                this._process();
                return this
            }, finalize: function (a) {
                a && this._append(a);
                return this._doFinalize()
            }, blockSize: 16, _createHelper: function (a) {
                return function (b, c) {
                    return (new a.init(c)).finalize(b)
                }
            }, _createHmacHelper: function (a) {
                return function (b,
                                 c) {
                    return (new v.HMAC.init(a, c)).finalize(b)
                }
            }
        });
        var v = b.algo = {};
        return b
    }(Math);
(function () {
    var a = CryptoJS, d = a.lib.WordArray;
    a.enc.Base64 = {
        stringify: function (a) {
            var c = a.words, f = a.sigBytes, d = this._map;
            a.clamp();
            a = [];
            for (var g = 0; g < f; g += 3)for (var l = (c[g >>> 2] >>> 24 - g % 4 * 8 & 255) << 16 | (c[g + 1 >>> 2] >>> 24 - (g + 1) % 4 * 8 & 255) << 8 | c[g + 2 >>> 2] >>> 24 - (g + 2) % 4 * 8 & 255, n = 0; 4 > n && g + .75 * n < f; n++)a.push(d.charAt(l >>> 6 * (3 - n) & 63));
            if (c = d.charAt(64))for (; a.length % 4;)a.push(c);
            return a.join("")
        }, parse: function (a) {
            var c = a.length, f = this._map, k = f.charAt(64);
            k && (k = a.indexOf(k), -1 != k && (c = k));
            for (var k = [], g = 0, l = 0; l < c; l++)if (l %
                4) {
                var n = f.indexOf(a.charAt(l - 1)) << l % 4 * 2, q = f.indexOf(a.charAt(l)) >>> 6 - l % 4 * 2;
                k[g >>> 2] |= (n | q) << 24 - g % 4 * 8;
                g++
            }
            return d.create(k, g)
        }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
    }
})();
var AUTOBAHNJS_VERSION = "0.8.2", global = this;
(function (a, d) {
    "function" === typeof define && define.amd ? define(["when"], function (b) {
        return a.ab = d(a, b)
    }) : "undefined" !== typeof exports ? "undefined" != typeof module && module.exports && (exports = module.exports = d(a, a.when)) : a.ab = d(a, a.when)
})(global, function (a, d) {
    var b = {_version: AUTOBAHNJS_VERSION};
    (function () {
        Array.prototype.indexOf || (Array.prototype.indexOf = function (a) {
            if (null === this)throw new TypeError;
            var b = Object(this), d = b.length >>> 0;
            if (0 === d)return -1;
            var g = 0;
            0 < arguments.length && (g = Number(arguments[1]),
                g !== g ? g = 0 : 0 !== g && Infinity !== g && -Infinity !== g && (g = (0 < g || -1) * Math.floor(Math.abs(g))));
            if (g >= d)return -1;
            for (g = 0 <= g ? g : Math.max(d - Math.abs(g), 0); g < d; g++)if (g in b && b[g] === a)return g;
            return -1
        });
        Array.prototype.forEach || (Array.prototype.forEach = function (a, b) {
            var d, g;
            if (null === this)throw new TypeError(" this is null or not defined");
            var l = Object(this), n = l.length >>> 0;
            if ("[object Function]" !== {}.toString.call(a))throw new TypeError(a + " is not a function");
            b && (d = b);
            for (g = 0; g < n;) {
                var q;
                g in l && (q = l[g], a.call(d,
                    q, g, l));
                g++
            }
        })
    })();
    b._sliceUserAgent = function (a, b, d) {
        var g = [], l = navigator.userAgent;
        a = l.indexOf(a);
        b = l.indexOf(b, a);
        0 > b && (b = l.length);
        d = l.slice(a, b).split(d);
        l = d[1].split(".");
        for (b = 0; b < l.length; ++b)g.push(parseInt(l[b], 10));
        return {name: d[0], version: g}
    };
    b.getBrowser = function () {
        var a = navigator.userAgent;
        return -1 < a.indexOf("Chrome") ? b._sliceUserAgent("Chrome", " ", "/") : -1 < a.indexOf("Safari") ? b._sliceUserAgent("Safari", " ", "/") : -1 < a.indexOf("Firefox") ? b._sliceUserAgent("Firefox", " ", "/") : -1 < a.indexOf("MSIE") ?
            b._sliceUserAgent("MSIE", ";", " ") : null
    };
    b.getServerUrl = function (b, f) {
        return "file:" === a.location.protocol ? f ? f : "ws://127.0.0.1/ws" : ("https:" === a.location.protocol ? "wss://" : "ws://") + a.location.hostname + ("" !== a.location.port ? ":" + a.location.port : "") + "/" + (b ? b : "ws")
    };
    b.browserNotSupportedMessage = "Browser does not support WebSockets (RFC6455)";
    b.deriveKey = function (a, b) {
        return b && b.salt ? CryptoJS.PBKDF2(a, b.salt, {
            keySize: (b.keylen || 32) / 4,
            iterations: b.iterations || 1E4,
            hasher: CryptoJS.algo.SHA256
        }).toString(CryptoJS.enc.Base64) :
            a
    };
    b._idchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    b._idlen = 16;
    b._subprotocol = "wamp";
    b._newid = function () {
        for (var a = "", f = 0; f < b._idlen; f += 1)a += b._idchars.charAt(Math.floor(Math.random() * b._idchars.length));
        return a
    };
    b._newidFast = function () {
        return Math.random().toString(36)
    };
    b.log = function () {
        if (1 < arguments.length) {
            console.group("Log Item");
            for (var a = 0; a < arguments.length; a += 1)console.log(arguments[a]);
            console.groupEnd()
        } else console.log(arguments[0])
    };
    b._debugrpc = !1;
    b._debugpubsub = !1;
    b._debugws = !1;
    b._debugconnect = !1;
    b.debug = function (c, f, d) {
        if ("console" in a)b._debugrpc = c, b._debugpubsub = c, b._debugws = f, b._debugconnect = d; else throw"browser does not support console object";
    };
    b.version = function () {
        return b._version
    };
    b.PrefixMap = function () {
        this._index = {};
        this._rindex = {}
    };
    b.PrefixMap.prototype.get = function (a) {
        return this._index[a]
    };
    b.PrefixMap.prototype.set = function (a, b) {
        this._index[a] = b;
        this._rindex[b] = a
    };
    b.PrefixMap.prototype.setDefault = function (a) {
        this._index[""] = a;
        this._rindex[a] =
            ""
    };
    b.PrefixMap.prototype.remove = function (a) {
        var b = this._index[a];
        b && (delete this._index[a], delete this._rindex[b])
    };
    b.PrefixMap.prototype.resolve = function (a, b) {
        var d = a.indexOf(":");
        if (0 <= d) {
            var g = a.substring(0, d);
            if (this._index[g])return this._index[g] + a.substring(d + 1)
        }
        return !0 === b ? a : null
    };
    b.PrefixMap.prototype.shrink = function (a, b) {
        for (var d = a.length; 0 < d; --d) {
            var g = a.substring(0, d);
            if (g = this._rindex[g])return g + ":" + a.substring(d)
        }
        return !0 === b ? a : null
    };
    b._MESSAGE_TYPEID_WELCOME = 0;
    b._MESSAGE_TYPEID_PREFIX =
        1;
    b._MESSAGE_TYPEID_CALL = 2;
    b._MESSAGE_TYPEID_CALL_RESULT = 3;
    b._MESSAGE_TYPEID_CALL_ERROR = 4;
    b._MESSAGE_TYPEID_SUBSCRIBE = 5;
    b._MESSAGE_TYPEID_UNSUBSCRIBE = 6;
    b._MESSAGE_TYPEID_PUBLISH = 7;
    b._MESSAGE_TYPEID_EVENT = 8;
    b.CONNECTION_CLOSED = 0;
    b.CONNECTION_LOST = 1;
    b.CONNECTION_RETRIES_EXCEEDED = 2;
    b.CONNECTION_UNREACHABLE = 3;
    b.CONNECTION_UNSUPPORTED = 4;
    b.CONNECTION_UNREACHABLE_SCHEDULED_RECONNECT = 5;
    b.CONNECTION_LOST_SCHEDULED_RECONNECT = 6;
    b.Deferred = d.defer;
    b._construct = function (b, d) {
    };
    b.Session = function (a, d, k, g) {
        var l = this;
        l._wsuri = a;
        l._options = g;
        l._websocket_onopen = d;
        l._websocket_onclose = k;
        l._websocket = null;
        l._websocket_connected = !1;
        l._session_id = null;
        l._wamp_version = null;
        l._server = null;
        l._calls = {};
        l._subscriptions = {};
        l._prefixes = new b.PrefixMap;
        l._txcnt = 0;
        l._rxcnt = 0;
        l._websocket = l._options && l._options.skipSubprotocolAnnounce ? b._construct(l._wsuri) : b._construct(l._wsuri, [b._subprotocol]);
        if (!l._websocket) {
            if (void 0 !== k) {
                k(b.CONNECTION_UNSUPPORTED);
                return
            }
            throw b.browserNotSupportedMessage;
        }
        l._websocket.onmessage = function (a) {
            b._debugws && (l._rxcnt += 1, console.group("WS Receive"), console.info(l._wsuri + "  [" + l._session_id + "]"), console.log(l._rxcnt), console.log(a.data), console.groupEnd());
            a = JSON.parse(a.data);
            if (a[1] in l._calls) {
                if (a[0] === b._MESSAGE_TYPEID_CALL_RESULT) {
                    var c = l._calls[a[1]], d = a[2];
                    if (b._debugrpc && void 0 !== c._ab_callobj) {
                        console.group("WAMP Call", c._ab_callobj[2]);
                        console.timeEnd(c._ab_tid);
                        console.group("Arguments");
                        for (var f = 3; f < c._ab_callobj.length; f += 1) {
                            var e = c._ab_callobj[f];
                            if (void 0 !== e)console.log(e); else break
                        }
                        console.groupEnd();
                        console.group("Result");
                        console.log(d);
                        console.groupEnd();
                        console.groupEnd()
                    }
                    c.resolve(d)
                } else if (a[0] === b._MESSAGE_TYPEID_CALL_ERROR) {
                    c = l._calls[a[1]];
                    d = a[2];
                    f = a[3];
                    e = a[4];
                    if (b._debugrpc && void 0 !== c._ab_callobj) {
                        console.group("WAMP Call", c._ab_callobj[2]);
                        console.timeEnd(c._ab_tid);
                        console.group("Arguments");
                        for (var h = 3; h < c._ab_callobj.length; h += 1) {
                            var p =
                                c._ab_callobj[h];
                            if (void 0 !== p)console.log(p); else break
                        }
                        console.groupEnd();
                        console.group("Error");
                        console.log(d);
                        console.log(f);
                        void 0 !== e && console.log(e);
                        console.groupEnd();
                        console.groupEnd()
                    }
                    void 0 !== e ? c.reject({uri: d, desc: f, detail: e}) : c.reject({uri: d, desc: f})
                }
                delete l._calls[a[1]]
            } else if (a[0] === b._MESSAGE_TYPEID_EVENT) {
                if (c = l._prefixes.resolve(a[1], !0), c in l._subscriptions) {
                    var g = a[1], k = a[2];
                    b._debugpubsub && (console.group("WAMP Event"), console.info(l._wsuri + "  [" + l._session_id + "]"), console.log(g),
                        console.log(k), console.groupEnd());
                    l._subscriptions[c].forEach(function (a) {
                        a(g, k)
                    })
                }
            } else if (a[0] === b._MESSAGE_TYPEID_WELCOME)if (null === l._session_id) {
                l._session_id = a[1];
                l._wamp_version = a[2];
                l._server = a[3];
                if (b._debugrpc || b._debugpubsub)console.group("WAMP Welcome"), console.info(l._wsuri + "  [" + l._session_id + "]"), console.log(l._wamp_version), console.log(l._server), console.groupEnd();
                null !== l._websocket_onopen && l._websocket_onopen()
            } else throw"protocol error (welcome message received more than once)";
        };
        l._websocket.onopen = function (a) {
            if (l._websocket.protocol !== b._subprotocol)if ("undefined" === typeof l._websocket.protocol)b._debugws && (console.group("WS Warning"), console.info(l._wsuri), console.log("WebSocket object has no protocol attribute: WAMP subprotocol check skipped!"), console.groupEnd()); else if (l._options && l._options.skipSubprotocolCheck)b._debugws && (console.group("WS Warning"), console.info(l._wsuri), console.log("Server does not speak WAMP, but subprotocol check disabled by option!"), console.log(l._websocket.protocol),
                console.groupEnd()); else throw l._websocket.close(1E3, "server does not speak WAMP"), "server does not speak WAMP (but '" + l._websocket.protocol + "' !)";
            b._debugws && (console.group("WAMP Connect"), console.info(l._wsuri), console.log(l._websocket.protocol), console.groupEnd());
            l._websocket_connected = !0
        };
        l._websocket.onerror = function (a) {
        };
        l._websocket.onclose = function (a) {
            b._debugws && (l._websocket_connected ? console.log("Autobahn connection to " + l._wsuri + " lost (code " + a.code + ", reason '" + a.reason + "', wasClean " +
                a.wasClean + ").") : console.log("Autobahn could not connect to " + l._wsuri + " (code " + a.code + ", reason '" + a.reason + "', wasClean " + a.wasClean + ")."));
            void 0 !== l._websocket_onclose && (l._websocket_connected ? a.wasClean ? l._websocket_onclose(b.CONNECTION_CLOSED, "WS-" + a.code + ": " + a.reason) : l._websocket_onclose(b.CONNECTION_LOST) : l._websocket_onclose(b.CONNECTION_UNREACHABLE));
            l._websocket_connected = !1;
            l._wsuri = null;
            l._websocket_onopen = null;
            l._websocket_onclose = null;
            l._websocket = null
        };
        l.log = function () {
            l._options &&
            "sessionIdent" in l._options ? console.group("WAMP Session '" + l._options.sessionIdent + "' [" + l._session_id + "]") : console.group("WAMP Session [" + l._session_id + "]");
            for (var a = 0; a < arguments.length; ++a)console.log(arguments[a]);
            console.groupEnd()
        }
    };
    b.Session.prototype._send = function (c) {
        if (!this._websocket_connected)throw"Autobahn not connected";
        switch (!0) {
            case a.Prototype && "undefined" === typeof top.root.__prototype_deleted:
            case "function" === typeof c.toJSON:
                c = c.toJSON();
                break;
            default:
                c = JSON.stringify(c)
        }
        this._websocket.send(c);
        this._txcnt += 1;
        b._debugws && (console.group("WS Send"), console.info(this._wsuri + "  [" + this._session_id + "]"), console.log(this._txcnt), console.log(c), console.groupEnd())
    };
    b.Session.prototype.close = function () {
        this._websocket_connected && this._websocket.close()
    };
    b.Session.prototype.sessionid = function () {
        return this._session_id
    };
    b.Session.prototype.wsuri = function () {
        return this._wsuri
    };
    b.Session.prototype.shrink = function (a, b) {
        void 0 === b && (b = !0);
        return this._prefixes.shrink(a, b)
    };
    b.Session.prototype.resolve =
        function (a, b) {
            void 0 === b && (b = !0);
            return this._prefixes.resolve(a, b)
        };
    b.Session.prototype.prefix = function (a, d) {
        this._prefixes.set(a, d);
        if (b._debugrpc || b._debugpubsub)console.group("WAMP Prefix"), console.info(this._wsuri + "  [" + this._session_id + "]"), console.log(a), console.log(d), console.groupEnd();
        this._send([b._MESSAGE_TYPEID_PREFIX, a, d])
    };
    b.Session.prototype.call = function () {
        for (var a = new b.Deferred, d; d = b._newidFast(), d in this._calls;);
        this._calls[d] = a;
        for (var k = this._prefixes.shrink(arguments[0],
            !0), k = [b._MESSAGE_TYPEID_CALL, d, k], g = 1; g < arguments.length; g += 1)k.push(arguments[g]);
        this._send(k);
        b._debugrpc && (a._ab_callobj = k, a._ab_tid = this._wsuri + "  [" + this._session_id + "][" + d + "]", console.time(a._ab_tid), console.info());
        return a.promise.then ? a.promise : a
    };
    b.Session.prototype.subscribe = function (a, d) {
        var k = this._prefixes.resolve(a, !0);
        k in this._subscriptions || (b._debugpubsub && (console.group("WAMP Subscribe"), console.info(this._wsuri + "  [" + this._session_id + "]"), console.log(a), console.log(d), console.groupEnd()),
            this._send([b._MESSAGE_TYPEID_SUBSCRIBE, a]), this._subscriptions[k] = []);
        if (-1 === this._subscriptions[k].indexOf(d))this._subscriptions[k].push(d); else throw"callback " + d + " already subscribed for topic " + k;
    };
    b.Session.prototype.unsubscribe = function (a, d) {
        var k = this._prefixes.resolve(a, !0);
        if (k in this._subscriptions) {
            var g;
            if (void 0 !== d) {
                var l = this._subscriptions[k].indexOf(d);
                if (-1 !== l)g = d, this._subscriptions[k].splice(l, 1); else throw"no callback " + d + " subscribed on topic " + k;
            } else g = this._subscriptions[k].slice(),
                this._subscriptions[k] = [];
            0 === this._subscriptions[k].length && (delete this._subscriptions[k], b._debugpubsub && (console.group("WAMP Unsubscribe"), console.info(this._wsuri + "  [" + this._session_id + "]"), console.log(a), console.log(g), console.groupEnd()), this._send([b._MESSAGE_TYPEID_UNSUBSCRIBE, a]))
        } else throw"not subscribed to topic " + k;
    };
    b.Session.prototype.publish = function () {
        var a = arguments[0], d = arguments[1], k = null, g = null, l = null, n = null;
        if (3 < arguments.length) {
            if (!(arguments[2] instanceof Array))throw"invalid argument type(s)";
            if (!(arguments[3] instanceof Array))throw"invalid argument type(s)";
            g = arguments[2];
            l = arguments[3];
            n = [b._MESSAGE_TYPEID_PUBLISH, a, d, g, l]
        } else if (2 < arguments.length)if ("boolean" === typeof arguments[2])k = arguments[2], n = [b._MESSAGE_TYPEID_PUBLISH, a, d, k]; else if (arguments[2] instanceof Array)g = arguments[2], n = [b._MESSAGE_TYPEID_PUBLISH, a, d, g]; else throw"invalid argument type(s)"; else n = [b._MESSAGE_TYPEID_PUBLISH, a, d];
        b._debugpubsub && (console.group("WAMP Publish"), console.info(this._wsuri + "  [" + this._session_id +
            "]"), console.log(a), console.log(d), null !== k ? console.log(k) : null !== g && (console.log(g), null !== l && console.log(l)), console.groupEnd());
        this._send(n)
    };
    b.Session.prototype.authreq = function (a, b) {
        return this.call("http://api.wamp.ws/procedure#authreq", a, b)
    };
    b.Session.prototype.authsign = function (a, b) {
        b || (b = "");
        return CryptoJS.HmacSHA256(a, b).toString(CryptoJS.enc.Base64)
    };
    b.Session.prototype.auth = function (a) {
        return this.call("http://api.wamp.ws/procedure#auth", a)
    };
    b._connect = function (c) {
        var d = new b.Session(c.wsuri,
            function () {
                c.connects += 1;
                c.retryCount = 0;
                c.onConnect(d)
            }, function (d, f) {
                switch (d) {
                    case b.CONNECTION_CLOSED:
                        c.onHangup(d, "Connection was closed properly [" + f + "]");
                        break;
                    case b.CONNECTION_UNSUPPORTED:
                        c.onHangup(d, "Browser does not support WebSocket.");
                        break;
                    case b.CONNECTION_UNREACHABLE:
                        c.retryCount += 1;
                        if (0 === c.connects)c.onHangup(d, "Connection could not be established."); else if (c.retryCount <= c.options.maxRetries)c.onHangup(b.CONNECTION_UNREACHABLE_SCHEDULED_RECONNECT, "Connection unreachable - scheduled reconnect to occur in " +
                            c.options.retryDelay / 1E3 + " second(s) - attempt " + c.retryCount + " of " + c.options.maxRetries + ".", {
                            delay: c.options.retryDelay,
                            retries: c.retryCount,
                            maxretries: c.options.maxRetries
                        }) ? (b._debugconnect && console.log("Connection unreachable - retrying stopped by app"), c.onHangup(b.CONNECTION_RETRIES_EXCEEDED, "Number of connection retries exceeded.")) : (b._debugconnect && console.log("Connection unreachable - retrying (" + c.retryCount + ") .."), a.setTimeout(function () {
                            b._connect(c)
                        }, c.options.retryDelay)); else c.onHangup(b.CONNECTION_RETRIES_EXCEEDED,
                            "Number of connection retries exceeded.");
                        break;
                    case b.CONNECTION_LOST:
                        c.retryCount += 1;
                        if (c.retryCount <= c.options.maxRetries)c.onHangup(b.CONNECTION_LOST_SCHEDULED_RECONNECT, "Connection lost - scheduled " + c.retryCount + "th reconnect to occur in " + c.options.retryDelay / 1E3 + " second(s).", {
                            delay: c.options.retryDelay,
                            retries: c.retryCount,
                            maxretries: c.options.maxRetries
                        }) ? (b._debugconnect && console.log("Connection lost - retrying stopped by app"), c.onHangup(b.CONNECTION_RETRIES_EXCEEDED, "Connection lost.")) :
                            (b._debugconnect && console.log("Connection lost - retrying (" + c.retryCount + ") .."), a.setTimeout(function () {
                                b._connect(c)
                            }, c.options.retryDelay)); else c.onHangup(b.CONNECTION_RETRIES_EXCEEDED, "Connection lost.");
                        break;
                    default:
                        throw"unhandled close code in ab._connect";
                }
            }, c.options)
    };
    b.connect = function (a, d, k, g) {
        var l = {};
        l.wsuri = a;
        l.options = g ? g : {};
        void 0 === l.options.retryDelay && (l.options.retryDelay = 5E3);
        void 0 === l.options.maxRetries && (l.options.maxRetries = 10);
        void 0 === l.options.skipSubprotocolCheck &&
        (l.options.skipSubprotocolCheck = !1);
        void 0 === l.options.skipSubprotocolAnnounce && (l.options.skipSubprotocolAnnounce = !1);
        if (d)l.onConnect = d; else throw"onConnect handler required!";
        l.onHangup = k ? k : function (a, c, d) {
            b._debugconnect && console.log(a, c, d)
        };
        l.connects = 0;
        l.retryCount = 0;
        b._connect(l)
    };
    b.launch = function (a, d, k) {
        b.connect(a.wsuri, function (g) {
            a.appkey && "" !== a.appkey ? g.authreq(a.appkey, a.appextra).then(function (k) {
                var n = null;
                "function" === typeof a.appsecret ? n = a.appsecret(k) : (n = b.deriveKey(a.appsecret,
                    JSON.parse(k).authextra), n = g.authsign(k, n));
                g.auth(n).then(function (a) {
                    d ? d(g) : b._debugconnect && g.log("Session opened.")
                }, g.log)
            }, g.log) : g.authreq().then(function () {
                g.auth().then(function (a) {
                    d ? d(g) : b._debugconnect && g.log("Session opened.")
                }, g.log)
            }, g.log)
        }, function (a, c, d) {
            k ? k(a, c, d) : b._debugconnect && b.log("Session closed.", a, c, d)
        }, a.sessionConfig)
    };
    return b
});
ab._UA_FIREFOX = /.*Firefox\/([0-9+]*).*/;
ab._UA_CHROME = /.*Chrome\/([0-9+]*).*/;
ab._UA_CHROMEFRAME = /.*chromeframe\/([0-9]*).*/;
ab._UA_WEBKIT = /.*AppleWebKit\/([0-9+.]*)w*.*/;
ab._UA_WEBOS = /.*webOS\/([0-9+.]*)w*.*/;
ab._matchRegex = function (a, d) {
    var b = d.exec(a);
    return b ? b[1] : b
};
ab.lookupWsSupport = function () {
    var a = navigator.userAgent;
    if (-1 < a.indexOf("MSIE")) {
        if (-1 < a.indexOf("MSIE 10"))return [!0, !0, !0];
        if (-1 < a.indexOf("chromeframe")) {
            var d = parseInt(ab._matchRegex(a, ab._UA_CHROMEFRAME));
            return 14 <= d ? [!0, !1, !0] : [!1, !1, !1]
        }
        if (-1 < a.indexOf("MSIE 8") || -1 < a.indexOf("MSIE 9"))return [!0, !0, !0]
    } else {
        if (-1 < a.indexOf("Firefox")) {
            if (d = parseInt(ab._matchRegex(a, ab._UA_FIREFOX))) {
                if (7 <= d)return [!0, !1, !0];
                if (3 <= d)return [!0, !0, !0]
            }
            return [!1, !1, !0]
        }
        if (-1 < a.indexOf("Safari") && -1 == a.indexOf("Chrome")) {
            if (d =
                    ab._matchRegex(a, ab._UA_WEBKIT))return -1 < a.indexOf("Windows") && "534+" == d || -1 < a.indexOf("Macintosh") && (d = d.replace("+", "").split("."), 535 == parseInt(d[0]) && 24 <= parseInt(d[1]) || 535 < parseInt(d[0])) ? [!0, !1, !0] : -1 < a.indexOf("webOS") ? (d = ab._matchRegex(a, ab._UA_WEBOS).split("."), 2 == parseInt(d[0]) ? [!1, !0, !0] : [!1, !1, !1]) : [!0, !0, !0]
        } else if (-1 < a.indexOf("Chrome")) {
            if (d = parseInt(ab._matchRegex(a, ab._UA_CHROME)))return 14 <= d ? [!0, !1, !0] : 4 <= d ? [!0, !0, !0] : [!1, !1, !0]
        } else if (-1 < a.indexOf("Android")) {
            if (-1 < a.indexOf("Firefox") ||
                -1 < a.indexOf("CrMo"))return [!0, !1, !0];
            if (-1 < a.indexOf("Opera"))return [!1, !1, !0];
            if (-1 < a.indexOf("CrMo"))return [!0, !0, !0]
        } else if (-1 < a.indexOf("iPhone") || -1 < a.indexOf("iPad") || -1 < a.indexOf("iPod"))return [!1, !1, !0]
    }
    return [!1, !1, !1]
};
jQuery.fn.fastLiveFilter = function (a, d) {
    d = d || {};
    a = jQuery(a);
    var b = this, c = "", f = d.filterCard || !1, k = d.filterUser || !1, g = d.forceRefreshPlugin || !1, l = d.timeout || 0, n = d.callback || function () {
        }, q, t = a.children(), v = t.length, e = 0 < v ? t[0].style.display : "block";
    n(v);
    b.keydown(function () {
        clearTimeout(q);
        q = setTimeout(function () {
            b.val() !== c && (c = b.val(), b.change())
        }, l)
    });
    $(this).bind("input propertychange change", function () {
        g && (a = jQuery(a), t = a.children(), v = t.length);
        f && (a = jQuery(a), t = a.children(".task_view"), v = t.length);
        for (var h = b.val().toLowerCase(), c, r, l = 0, q = 0; q < v; q++) {
            c = t[q];
            r = d.selector ? $(c).find(d.selector).text() : c.textContent || c.innerText || "";
            if (f) {
                var B = r.indexOf("0/0");
                -1 != B && (r = r.substring(0, B));
                $(c).find(".header-in-bar").each(function (a) {
                    r += $(this).attr("title")
                });
                $(c).find(".tag_on_card").each(function (a) {
                    r += $(this).attr("title")
                })
            }
            k && (r += $(c).attr("title"));
            0 <= r.toLowerCase().indexOf(h) ? ("none" == c.style.display && (c.style.display = e), l++) : "none" != c.style.display && (c.style.display = "none")
        }
        n(l);
        return !1
    });
    return this
};
(function (a) {
    function d(b) {
        var c = b.handler, d = (b.namespace || "").toLowerCase().split(" "), d = a.map(d, function (a) {
            return a.split(".")
        });
        if (1 !== d.length || "" !== d[0] && "autocomplete" !== d[0].substring(0, 12) && "accordion" !== d[0].substring(0, 9) && "tabs" !== d[0].substring(0, 4) && "menu" !== d[0].substring(0, 4))b.handler = function (b) {
            if (this === b.target || !/textarea|select/i.test(b.target.nodeName) && "text" !== b.target.type && "true" != $(b.target).prop("contenteditable")) {
                var g = "keypress" !== b.type && a.hotkeys.specialKeys[b.which],
                    l = String.fromCharCode(b.which).toLowerCase(), n = "", q = {};
                b.altKey && "alt" !== g && (n += "alt_");
                b.ctrlKey && "ctrl" !== g && (n += "ctrl_");
                b.metaKey && !b.ctrlKey && "meta" !== g && (n += "meta_");
                b.shiftKey && "shift" !== g && (n += "shift_");
                g ? q[n + g] = !0 : (q[n + l] = !0, q[n + a.hotkeys.shiftNums[l]] = !0, "shift_" === n && (q[a.hotkeys.shiftNums[l]] = !0));
                g = 0;
                for (l = d.length; g < l; g++)if (q[d[g]])return c.apply(this, arguments)
            }
        }
    }

    a.hotkeys = {
        version: "0.8+", specialKeys: {
            8: "backspace",
            9: "tab",
            13: "return",
            16: "shift",
            17: "ctrl",
            18: "alt",
            19: "pause",
            20: "capslock",
            27: "esc",
            32: "space",
            33: "pageup",
            34: "pagedown",
            35: "end",
            36: "home",
            37: "left",
            38: "up",
            39: "right",
            40: "down",
            45: "insert",
            46: "del",
            96: "0",
            97: "1",
            98: "2",
            99: "3",
            100: "4",
            101: "5",
            102: "6",
            103: "7",
            104: "8",
            105: "9",
            106: "*",
            107: "+",
            109: "-",
            110: ".",
            111: "/",
            112: "f1",
            113: "f2",
            114: "f3",
            115: "f4",
            116: "f5",
            117: "f6",
            118: "f7",
            119: "f8",
            120: "f9",
            121: "f10",
            122: "f11",
            123: "f12",
            144: "numlock",
            145: "scroll",
            188: ",",
            190: ".",
            191: "/",
            224: "meta"
        }, shiftNums: {
            "`": "~", 1: "!", 2: "@", 3: "#", 4: "$", 5: "%", 6: "^", 7: "&", 8: "*", 9: "(", 0: ")", "-": "_",
            "=": "+", ";": ": ", "'": '"', ",": "<", ".": ">", "/": "?", "\\": "|"
        }
    };
    a.each(["keydown", "keyup", "keypress"], function () {
        a.event.special[this] = {add: d}
    })
})(jQuery);
/*
 http://www.gnu.org/licenses/gpl.html [GNU General Public License]
 @param {jQuery}
 {md5:function(string))
 @return string
 */
var root_url = $("#root_url").val(), is_mobile = $("#is_mobile").val(), winHeight = $(window).height(), windowWidth = $(window).width(), mediaView = {maxMobileWidth: 414}, flag_open_a_dialog_div = !1, flag_lane_moved = !1, countdown = 60, tagColor = [{
    tag_code: "A1",
    tag_color: "green"
}, {tag_code: "A2", tag_color: "#74ACC8"}, {tag_code: "A3", tag_color: "pink"}, {
    tag_code: "A4",
    tag_color: "rgb(253, 133, 169)"
}, {tag_code: "A5", tag_color: "#B3AA3F"}, {tag_code: "A6", tag_color: "rgb(0, 216, 255)"}, {
    tag_code: "A7",
    tag_color: "purple"
}, {
    tag_code: "A8",
    tag_color: "#D0021B"
}, {tag_code: "A9", tag_color: "#F5A623"}, {tag_code: "B1", tag_color: "#0D76F0"}, {
    tag_code: "B2",
    tag_color: "black"
}, {tag_code: "B3", tag_color: "grey"}], arrAutoClosePopup = [], flag_shown_help = !1;
function _closePopup() {
    if (0 != arrAutoClosePopup.length) {
        var a = arrAutoClosePopup[0].popupDiv;
        isShown(a) && ("block" == a[0].style.display ? a.css("display", "none") : a.addClass("hidden"), void 0 != arrAutoClosePopup[0].functionWhenClosePopup && "function" == typeof arrAutoClosePopup[0].functionWhenClosePopup && arrAutoClosePopup[0].functionWhenClosePopup(a));
        arrAutoClosePopup.shift()
    }
}
function closeCurrentPopup() {
    _closePopup();
    getEvent().stopPropagation()
}
function autoCloseOtherPopup() {
    if (flag_lane_moved) {
        flag_lane_moved = !1;
        var a = div_board.find(".shadow-focus");
        $(a).find(".div_block").removeClass("lane-shadow");
        $(a).removeClass("shadow-focus");
        $(a).find(".lane-handle-btn").find("a").removeClass("lane-move-btn")
    }
    "undefined" != typeof div_board && "true" == $("#btn_board_dropdown").attr("aria-expanded") && ($("#btn_board_dropdown").attr("aria-expanded", "false").parent().removeClass("open"), getEvent().stopPropagation());
    flag_shown_help && (clearPrompt(), flag_shown_help = !1);
    0 != arrAutoClosePopup.length && (0 != arrAutoClosePopup[0].popupDiv.find(getEvent().target).length || isShown($("#ui-datepicker-div")) || _closePopup())
}
function useDesttopCSS() {
    return !useMobileCSS()
}
function useMobileCSS() {
    return "true" == is_mobile
}
function trimAnddeleteEnter(a) {
    return $.trim(a.replace(/[\r\n]/g, ""))
}
function isAndroid() {
    var a = navigator.userAgent;
    if (-1 < a.indexOf("Android") || -1 < a.indexOf("Linux"))return !0
}
function isWeiXin() {
    return "micromessenger" == window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) ? !0 : !1
}
function isSafari() {
    var a = window.navigator.userAgent.toLowerCase();
    return -1 < a.indexOf("safari") && 1 > a.indexOf("chrome") ? !0 : !1
}
function isAndroidWeixin() {
    return isWeiXin() && isAndroid()
}
function isIphoneWeixin() {
    return isWeiXin() ? -1 < window.navigator.userAgent.toLowerCase().indexOf("iphone") : !1
}
String.prototype.replaceAll = function (a, d) {
    return this.replace(new RegExp(a, "gm"), d)
};
function getTagColorByTagCode(a) {
    var d = "";
    $(tagColor).each(function (b) {
        this.tag_code == a && (d = this.tag_color)
    });
    return d
}
function getUserIconTitlHtml(a, d) {
    var b;
    return b = (a + "\r\n" + d).replaceAll('"', "&quot;")
}
function getUserIconTitlHtml_only4Drag(a, d) {
    var b;
    return b = (a + "\r\n" + d + "\r\n\u6309\u4f4f\u5934\u50cf\u53ef\u5c06\u5176\u62d6\u62fd\u81f3\u5361\u7247\u4e0a").replaceAll('"', "&quot;")
}
function htmlspecialchars(a, d, b) {
    var c = 0, f = 0, k = !1;
    if ("undefined" === typeof d || null === d)d = 2;
    a = a.toString();
    !1 !== b && (a = a.replace(/&/g, "&amp;"));
    a = a.replace(/</g, "&lt;").replace(/>/g, "&gt;");
    b = {
        ENT_NOQUOTES: 0,
        ENT_HTML_QUOTE_SINGLE: 1,
        ENT_HTML_QUOTE_DOUBLE: 2,
        ENT_COMPAT: 2,
        ENT_QUOTES: 3,
        ENT_IGNORE: 4
    };
    0 === d && (k = !0);
    if ("number" !== typeof d) {
        d = [].concat(d);
        for (f = 0; f < d.length; f++)0 === b[d[f]] ? k = !0 : b[d[f]] && (c |= b[d[f]]);
        d = c
    }
    d & b.ENT_HTML_QUOTE_SINGLE && (a = a.replace(/'/g, "&#039;"));
    k || (a = a.replace(/"/g, "&quot;"));
    return a
}
function htmlspecialchars_decode(a, d) {
    var b = 0, c = 0, f = !1;
    "undefined" === typeof d && (d = 2);
    a = a.toString().replace(/&lt;/g, "<").replace(/&gt;/g, ">");
    var k = {
        ENT_NOQUOTES: 0,
        ENT_HTML_QUOTE_SINGLE: 1,
        ENT_HTML_QUOTE_DOUBLE: 2,
        ENT_COMPAT: 2,
        ENT_QUOTES: 3,
        ENT_IGNORE: 4
    };
    0 === d && (f = !0);
    if ("number" !== typeof d) {
        d = [].concat(d);
        for (c = 0; c < d.length; c++)0 === k[d[c]] ? f = !0 : k[d[c]] && (b |= k[d[c]]);
        d = b
    }
    d & k.ENT_HTML_QUOTE_SINGLE && (a = a.replace(/&#0*39;/g, "'"));
    f || (a = a.replace(/&quot;/g, '"'));
    return a = a.replace(/&amp;/g, "&")
}
function isShown(a) {
    var d = a;
    "string" === jQuery.type(a) && (d = $("#" + a));
    return 0 == d.length ? !1 : !d.hasClass("hidden") && "none" != d.css("display")
}
function isHidden(a) {
    return !isShown(a)
}
function createId() {
    var a = (new Date).getTime(), d = (Math.random().toString(16) + "000000000").substr(2, 8);
    return $.md5(token + a + d)
}
(function (a) {
    var d = function (a, b) {
        var c, d, f, e, h;
        f = a & 2147483648;
        e = b & 2147483648;
        c = a & 1073741824;
        d = b & 1073741824;
        h = (a & 1073741823) + (b & 1073741823);
        return c & d ? h ^ 2147483648 ^ f ^ e : c | d ? h & 1073741824 ? h ^ 3221225472 ^ f ^ e : h ^ 1073741824 ^ f ^ e : h ^ f ^ e
    }, b = function (a, b, c, f, g, e, h) {
        a = d(a, d(d(b & c | ~b & f, g), h));
        return d(a << e | a >>> 32 - e, b)
    }, c = function (a, b, c, f, g, e, h) {
        a = d(a, d(d(b & f | c & ~f, g), h));
        return d(a << e | a >>> 32 - e, b)
    }, f = function (a, b, c, f, g, e, h) {
        a = d(a, d(d(b ^ c ^ f, g), h));
        return d(a << e | a >>> 32 - e, b)
    }, k = function (a, b, c, f, g, e, h) {
        a = d(a, d(d(c ^ (b | ~f),
            g), h));
        return d(a << e | a >>> 32 - e, b)
    }, g = function (a) {
        var b = "", c = "", d;
        for (d = 0; 3 >= d; d++)c = a >>> 8 * d & 255, c = "0" + c.toString(16), b += c.substr(c.length - 2, 2);
        return b
    };
    a.extend({
        md5: function (a) {
            var n = [], q, t, v, e, h, p, r, u, n = a.replace(/\x0d\x0a/g, "\n");
            a = "";
            for (q = 0; q < n.length; q++)t = n.charCodeAt(q), 128 > t ? a += String.fromCharCode(t) : (127 < t && 2048 > t ? a += String.fromCharCode(t >> 6 | 192) : (a += String.fromCharCode(t >> 12 | 224), a += String.fromCharCode(t >> 6 & 63 | 128)), a += String.fromCharCode(t & 63 | 128));
            n = a;
            a = n.length;
            q = a + 8;
            t = 16 * ((q - q % 64) /
                64 + 1);
            v = Array(t - 1);
            for (h = e = 0; h < a;)q = (h - h % 4) / 4, e = h % 4 * 8, v[q] |= n.charCodeAt(h) << e, h++;
            q = (h - h % 4) / 4;
            v[q] |= 128 << h % 4 * 8;
            v[t - 2] = a << 3;
            v[t - 1] = a >>> 29;
            n = v;
            h = 1732584193;
            p = 4023233417;
            r = 2562383102;
            u = 271733878;
            for (a = 0; a < n.length; a += 16)q = h, t = p, v = r, e = u, h = b(h, p, r, u, n[a + 0], 7, 3614090360), u = b(u, h, p, r, n[a + 1], 12, 3905402710), r = b(r, u, h, p, n[a + 2], 17, 606105819), p = b(p, r, u, h, n[a + 3], 22, 3250441966), h = b(h, p, r, u, n[a + 4], 7, 4118548399), u = b(u, h, p, r, n[a + 5], 12, 1200080426), r = b(r, u, h, p, n[a + 6], 17, 2821735955), p = b(p, r, u, h, n[a + 7], 22, 4249261313),
                h = b(h, p, r, u, n[a + 8], 7, 1770035416), u = b(u, h, p, r, n[a + 9], 12, 2336552879), r = b(r, u, h, p, n[a + 10], 17, 4294925233), p = b(p, r, u, h, n[a + 11], 22, 2304563134), h = b(h, p, r, u, n[a + 12], 7, 1804603682), u = b(u, h, p, r, n[a + 13], 12, 4254626195), r = b(r, u, h, p, n[a + 14], 17, 2792965006), p = b(p, r, u, h, n[a + 15], 22, 1236535329), h = c(h, p, r, u, n[a + 1], 5, 4129170786), u = c(u, h, p, r, n[a + 6], 9, 3225465664), r = c(r, u, h, p, n[a + 11], 14, 643717713), p = c(p, r, u, h, n[a + 0], 20, 3921069994), h = c(h, p, r, u, n[a + 5], 5, 3593408605), u = c(u, h, p, r, n[a + 10], 9, 38016083), r = c(r, u, h, p, n[a + 15], 14, 3634488961),
                p = c(p, r, u, h, n[a + 4], 20, 3889429448), h = c(h, p, r, u, n[a + 9], 5, 568446438), u = c(u, h, p, r, n[a + 14], 9, 3275163606), r = c(r, u, h, p, n[a + 3], 14, 4107603335), p = c(p, r, u, h, n[a + 8], 20, 1163531501), h = c(h, p, r, u, n[a + 13], 5, 2850285829), u = c(u, h, p, r, n[a + 2], 9, 4243563512), r = c(r, u, h, p, n[a + 7], 14, 1735328473), p = c(p, r, u, h, n[a + 12], 20, 2368359562), h = f(h, p, r, u, n[a + 5], 4, 4294588738), u = f(u, h, p, r, n[a + 8], 11, 2272392833), r = f(r, u, h, p, n[a + 11], 16, 1839030562), p = f(p, r, u, h, n[a + 14], 23, 4259657740), h = f(h, p, r, u, n[a + 1], 4, 2763975236), u = f(u, h, p, r, n[a + 4], 11, 1272893353),
                r = f(r, u, h, p, n[a + 7], 16, 4139469664), p = f(p, r, u, h, n[a + 10], 23, 3200236656), h = f(h, p, r, u, n[a + 13], 4, 681279174), u = f(u, h, p, r, n[a + 0], 11, 3936430074), r = f(r, u, h, p, n[a + 3], 16, 3572445317), p = f(p, r, u, h, n[a + 6], 23, 76029189), h = f(h, p, r, u, n[a + 9], 4, 3654602809), u = f(u, h, p, r, n[a + 12], 11, 3873151461), r = f(r, u, h, p, n[a + 15], 16, 530742520), p = f(p, r, u, h, n[a + 2], 23, 3299628645), h = k(h, p, r, u, n[a + 0], 6, 4096336452), u = k(u, h, p, r, n[a + 7], 10, 1126891415), r = k(r, u, h, p, n[a + 14], 15, 2878612391), p = k(p, r, u, h, n[a + 5], 21, 4237533241), h = k(h, p, r, u, n[a + 12], 6, 1700485571),
                u = k(u, h, p, r, n[a + 3], 10, 2399980690), r = k(r, u, h, p, n[a + 10], 15, 4293915773), p = k(p, r, u, h, n[a + 1], 21, 2240044497), h = k(h, p, r, u, n[a + 8], 6, 1873313359), u = k(u, h, p, r, n[a + 15], 10, 4264355552), r = k(r, u, h, p, n[a + 6], 15, 2734768916), p = k(p, r, u, h, n[a + 13], 21, 1309151649), h = k(h, p, r, u, n[a + 4], 6, 4149444226), u = k(u, h, p, r, n[a + 11], 10, 3174756917), r = k(r, u, h, p, n[a + 2], 15, 718787259), p = k(p, r, u, h, n[a + 9], 21, 3951481745), h = d(h, q), p = d(p, t), r = d(r, v), u = d(u, e);
            return (g(h) + g(p) + g(r) + g(u)).toLowerCase().substr(8, 16)
        }
    })
})(jQuery);
$(document).keydown(function (a) {
    a = a || event;
    if (27 == a.keyCode)return _closePopup(), clearPrompt(), a = $("#txtSearchCard"), 0 != a.length && (isShown(a) && toggleSearchCard(), isShown("search_btn") && hide_search_div()), a = $("#txtSearchBoard_inBoardListPage"), 0 != a.length && toggleSearchBoard(), a.blur(), "undefined" != typeof current_task_id && 0 != current_task_id && $("#task_" + current_task_id)[0].focus(), current_task_id = 0, $("body").focus(), !1;
    if (13 == a.keyCode) {
        var d = a.target ? a.target : a.srcElement;
        if (!("new_task_name" == d.name ||
            "edit_task_name" == d.id || "new_list_name" == d.name || "new_board_name" == d.name || "txtRenameList" == d.name || "search_member" == d.id || "txtRenameBoard" == d.id || "invite_nickname" == d.id || "estimateInput" == d.id || "inputNickName" == d.id || "invitee_nick_input" == d.id || "inputIconName" == d.id || "boardDateFrom" == d.id || "boardDateTo" == d.id || "login_email" == d.id || "ori_pwd" == d.id || "new_pwd" == d.id || "new_pwd_conf" == d.id || "retrievePwdEmail" == d.name || "FeedbackContent" == d.id || "resetPwd" == d.name || "confirmResetPwd" == d.name || "TaskContentInput" ==
            d.id || "new_checklistItem_name" == d.name || "edit_checklistItem_name" == d.name || "txtTagName" == d.id || "txtColorThreshold_alert" == d.id || "txtColorThreshold_danger" == d.id || "edit_task_name_on_board" == d.name || "txtEditComment" == d.id || "inputChklstName" == d.name || "linkAttachmentInput" == d.id || "inputProjectName" == d.id || "textareaProDescription" == d.id || "proAddMemInput" == d.id || "oldPwd" == d.id || "newPwd" == d.id || "confirmNewPwd" == d.id || "inputUserInfoNickName" == d.name || "inputUserInfoHeadImgLetter" == d.name || "inputUserInfoBio" ==
            d.name || "edit_project_name" == d.name || "edit_project_description" == d.name || "loginEmail" == d.name || "loginPwd" == d.name || "regNickName" == d.name || "regEmail" == d.name || "regPwd" == d.name || "inputBackupEmail" == d.id || "inputIdentifyingCode" == d.id || "loginBindPwd" == d.name || "loginBindEmail" == d.name || "regActivityName" == d.id || "regActivityPhone" == d.id || "regActivityEmail" == d.id || "regActivityCompany" == d.id || "regActivityPosition" == d.id || "regActivityQq" == d.id || "regActivityNumber" == d.id || "regActivityOther" == d.id || $(d).hasClass("task_view") &&
            me.can_edit_board))return !1;
        if ($(d).hasClass("task_view"))showEditTaskDivOnBoard(a), a.returnValue = !1, a.preventDefault(); else if ("new_task_name" != d.name && "edit_task_name" != d.id && "FeedbackContent" != d.id && "TaskContentInput" != d.id && "textareaProDescription" != d.id && "new_checklistItem_name" != d.name && "edit_checklistItem_name" != d.name && "edit_task_name_on_board" != d.name && "inputChklstName" != d.name || !a.shiftKey) {
            var b = d.value, b = $.trim(b.replace(/[\r\n]/g, ""));
            if (0 == b.length && "txtTagName" != d.id)return $(d).val(""),
                $(d).focus(), !1;
            $.trim(d.value);
            return "txtColorThreshold_alert" == d.id || "txtColorThreshold_danger" == d.id ? (saveColorThreshold(), !1) : "new_task_name" == d.name ? (addTask(), !1) : "edit_task_name" == d.id ? (f_edit_task(), !1) : "txtRenameList" == d.name ? (renameList(a), !1) : "search_member" == d.id ? (click_search_mem_btn(), !1) : "txtRenameBoard" == d.id ? ($("#btnRenameBoard").click(), !1) : "invite_nickname" == d.id ? (confirm_add(), !1) : "new_board_name" == d.name ? (confirmCreateNewBoard(), !1) : "inputProjectName" == d.id || "textareaProDescription" ==
            d.id ? (confirmCreateNewProject(), !1) : "proAddMemInput" == d.id ? (addProMemBtn(), !1) : "estimateInput" == d.id ? (btnSubmitEstimate(), !1) : "inputNickName" == d.id || "inputIconName" == d.id ? (checkAltNickName(), !1) : "invitee_nick_input" == d.id ? (confirm_add(), !1) : "boardDateFrom" == d.id || "boardDateTo" == d.id ? (btnConfirmBoardPeriod(), !1) : "loginEmail" == d.name || "loginPwd" == d.name ? ($("button[name='loginSubmit']").click(), !1) : "regNickName" == d.name || "regEmail" == d.name || "regPwd" == d.name ? ($("button[name='regSubmit']").click(), !1) :
                "resetPwd" == d.name || "confirmResetPwd" == d.name ? ($("button[name='resetPwdSubmit']").click(), !1) : "ori_pwd" == d.id || "new_pwd" == d.id || "new_pwd_conf" == d.id ? ($("#form-alter").submit(), !1) : "retrievePwdEmail" == d.name ? ($("button[name='retrievePwdSubmit']").click(), !1) : "TaskContentInput" == d.id ? (d = $("#divAtUser"), b = d.find("ul li"), d.is(":visible") && b.hasClass("liHover") ? select_at_who(d.find("li.liHover")) : addComment(a), !1) : "new_checklistItem_name" == d.name ? (addChklstItem(), !1) : "edit_checklistItem_name" == d.name ?
                    (editChklstItem(), !1) : "txtTagName" == d.id ? (SaveTagName(), !1) : "edit_task_name_on_board" == d.name ? (save_edit_task_on_board(), !1) : "inputChklstName" == d.name ? (addChklstItem(), !1) : "linkAttachmentInput" == d.id ? (submitLinkAttachment(), !1) : "inputUserInfoNickName" == d.name || "inputUserInfoHeadImgLetter" == d.name || "inputUserInfoBio" == d.name ? (saveUserBaseInfo(), !1) : "edit_project_name" == d.name || "edit_project_description" == d.name ? (save_project_information(), !1) : "oldPwd" == d.id || "newPwd" == d.id || "confirmNewPwd" == d.id ? (confirmChangePwd(),
                    !1) : "inputIdentifyingCode" == d.id || "inputBackupEmail" == d.id ? (addBackupEmail(), !1) : "loginBindPwd" == d.name || "loginBindEmail" == d.name ? ($("button[name='loginBindSubmit']").click(), !1) : "regActivityName" == d.id || "regActivityPhone" == d.id || "regActivityEmail" == d.id || "regActivityCompany" == d.id || "regActivityPosition" == d.id || "regActivityQq" == d.id ? ($("#regActivitySubmit").click(), !1) : !0
        }
    }
});
function setPanelDefaultMaxHeight(a, d) {
    var b = $(d);
    b.css("max-height", a + "px");
    var c = a - b.children(".panel-heading")[0].offsetHeight - (0 == b.children(".panel-footer").length ? 0 : b.children(".panel-footer")[0].offsetHeight) - 2;
    b.children(".panel-body").css("max-height", c + "px")
}
function formatFileSize(a) {
    return "number" !== typeof a ? "" : 1E9 <= a ? (a / 1E9).toFixed(2) + " GB" : 1E6 <= a ? (a / 1E6).toFixed(2) + " MB" : (a / 1E3).toFixed(2) + " KB"
}
function GetQueryString(a) {
    a = new RegExp("(^|&)" + a + "=([^&]*)(&|$)");
    a = window.location.search.substr(1).match(a);
    return null != a ? a[2] : ""
}
function getCurrentDateTime() {
    Date.prototype.format = function (a) {
        var d = {
            "M+": this.getMonth() + 1,
            "d+": this.getDate(),
            "h+": this.getHours(),
            "m+": this.getMinutes(),
            "s+": this.getSeconds(),
            "q+": Math.floor((this.getMonth() + 3) / 3),
            S: this.getMilliseconds()
        };
        /(y+)/.test(a) && (a = a.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)));
        for (var b in d)(new RegExp("(" + b + ")")).test(a) && (a = a.replace(RegExp.$1, 1 == RegExp.$1.length ? d[b] : ("00" + d[b]).substr(("" + d[b]).length)));
        return a
    };
    return (new Date).format("yyyy-MM-dd hh:mm:ss")
}
function checkTimeWithNow(a) {
    var d = getCurrentDateTime().substring(0, 16), b = getCurrentDateTime().substring(0, 10), c = a.substring(0, 10);
    return compareTime(a, d) ? c == b ? 0 : 1 : -1
}
function compareTime(a, d) {
    var b = a.substring(0, 10).split("-"), c = d.substring(0, 10).split("-");
    a = b[1] + "/" + b[2] + "/" + b[0] + " " + a.substring(11, 16);
    d = c[1] + "/" + c[2] + "/" + c[0] + " " + d.substring(11, 16);
    return 0 > Date.parse(d) - Date.parse(a) ? !0 : !1
}
function getSecondsFromNow(a) {
    var d = getCurrentDateTime(), b = a.substring(0, 10).split("-"), c = d.substring(0, 10).split("-");
    a = b[1] + "/" + b[2] + "/" + b[0] + " " + a.substring(11, 19);
    d = c[1] + "/" + c[2] + "/" + c[0] + " " + d.substring(11, 19);
    return Date.parse(a) - Date.parse(d)
}
function isToday(a) {
    var d = getCurrentDateTime(0, 16), b = d.substring(0, 10), d = d.substring(0, 4), c = a.substring(0, 10), f = a.substring(0, 4);
    return a = c == b ? "\u4eca\u5929" + a.substring(11, 16) : f == d ? a.substring(5, 7) + "\u6708" + a.substring(8, 10) + "\u65e5" : a.substring(0, 4) + "\u5e74" + a.substring(5, 7) + "\u6708" + a.substring(8, 10) + "\u65e5"
}
function removeZero(a) {
    "0" == a.substring(a.length - 1) && (a = a.substring(0, a.length - 2));
    return a
}
function getMouseCoordinate(a) {
    return a.pageX || a.pageY ? {
        x: a.pageX,
        y: a.pageY
    } : {
        x: a.clientX + document.body.scrollLeft - document.body.clientLeft,
        y: a.clientY + document.body.scrollTop - document.body.clientTop
    }
}
function setCursorPosInTextarea(a, d) {
    var b = document.getElementById(a);
    d = d ? d : b.value.length;
    if (b.createTextRange) {
        var c = b.createTextRange();
        c.moveStart("character", d);
        c.collapse(!0);
        c.select()
    } else b.setSelectionRange(b.value.length, d);
    b.focus()
}
function changeTextareaRows(a, d) {
    $(a).attr("rows", d)
}
function openUrl(a) {
    window.location.href = a
}
function randomString(a) {
    for (var d = "", b = 0; b < a; b++)d += "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678".charAt(Math.floor(48 * Math.random()));
    return d
}
function displayErrorWarning(a, d) {
    $(a).html(d);
    $(a).removeClass("hidden")
}
function clearErrorWarning(a) {
    $(a).addClass("hidden");
    $(a).html("")
}
function displayWarning(a, d) {
    a.html(d);
    a.slideDown()
}
function clearInputContent(a) {
    $.isArray(a) ? $.each(a, function (a, b) {
        $(b).val("")
    }) : $(a).val("")
}
function gotoSpecialTab(a, d) {
    var b = location.href.substring(location.href.indexOf("/go/") + 4).split("/"), c = b.length - 1;
    "user" == b[c] || "user#" == b[c] ? $("#" + a + ' a[href="#memberPane"]').tab("show") : "setting" == b[c] || "setting#" == b[c] ? $("#" + a + ' a[href="#settingPane"]').tab("show") : "third" == b[c] || "third#" == b[c] ? $("#" + a + ' a[href="#account"]').tab("show") : $('#tabs a[href="#' + d + '"]').tab("show")
}
function getEvent() {
    var a;
    if (void 0 == window.event) {
        for (caller = arguments.callee; null != caller.caller;)caller = caller.caller;
        a = caller.arguments[0]
    } else a = window.event;
    return a
}
Array.prototype.unique = function () {
    for (var a = [], d = {}, b = 0, c; null != (c = this[b]); b++)d[c] || (a.push(c), d[c] = !0);
    return a
};
function countTime(a) {
    var d = "";
    0 == countdown ? ($(a).removeAttr("disabled"), $(a).html("\u91cd\u53d1\u9a8c\u8bc1\u7801"), countdown = 60) : ($(a).attr("disabled", !0), d = "\u91cd\u65b0\u53d1\u9001(" + countdown + ")", $(a).html(d), countdown--, setTimeout(function () {
        countTime(a)
    }, 1E3))
}
function getCursorPosAndText(a, d) {
    var b = {start: 0, end: 0, text: ""};
    if ("number" == typeof a.selectionStart)b.start = a.selectionStart; else if (document.selection) {
        var c = document.selection.createRange();
        c.moveStart("character", -a.value.length);
        b.start = c.text.length
    }
    b.text = d.substring(0, b.start);
    return b
};var KANBAN_PERMISSION_CAN_EDIT = 1, KANBAN_PERMISSION_ONLY_READ = 2, KANBAN_PERMISSION_ADMIN = 3;
$(function () {
    645 > window.innerHeight && $("#singile_page_footer").removeClass("navbar-fixed-bottom")
});
function getTagNameByTagCode(a) {
    var d = "";
    $(g_board.tags).each(function () {
        this.tag_code == a && (d = this.tag_name)
    });
    return d
}
function setTagNameByTagCode(a, d) {
    var b = !1;
    $(g_board.tags).each(function () {
        this.tag_code == a && (this.tag_name = d, b = !0)
    });
    b || g_board.tags.push({tag_code: a, tag_name: d})
}
function check_pwd(a) {
    return /^(?=.*[a-zA-Z])(?=.*\d)/.test(a)
}
function check_email(a) {
    return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(a)
}
function check_nick_name(a) {
    return /^[0-9a-zA-Z\u4e00-\u9fa5]/.test(a)
}
function checkStatisticPattem(a) {
    return /^[1-2]/.test(a)
}
function checkPositiveInteger(a) {
    return (new RegExp(/^[0-9]*[1-9][0-9]*$/)).test(a)
}
function checkunNegativeInteger(a) {
    return (new RegExp(/^[0-9]+$/)).test(a)
}
function checkIntegerOrSingleDecimal(a) {
    return (new RegExp(/^[\d]+(\.\d)?$/)).test(a)
}
function checkDate(a) {
    return /^(?:(?:1[6-9]|[2-9][0-9])[0-9]{2}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:(?:1[6-9]|[2-9][0-9])(?:0[48]|[2468][048]|[13579][26])|(?:16|[2468][048]|[3579][26])00)([-/.]?)0?2\2(?:29))$/.test(a)
}
function checkDateTime(a) {
    return /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29) ([01][0-9]|[2][0-3]):[0-5][0-9]$/.test(a)
}
function showAddBoardDiv() {
    $("#pannelAddBoard").addClass("hidden");
    $("#pannelAddProject").addClass("hidden");
    $("#divCreateBoard .panel-body").find(".ul-one").removeClass("hidden");
    $("#divCreateBoard").removeClass("hidden");
    arrAutoClosePopup.unshift({popupDiv: $("#divCreateBoard")});
    $("#divCreateBoard").find("input")[0].focus()
}
function setAddBoardDivPositionForMobile(a) {
    if (useMobileCSS()) {
        var d = $("#divCreateBoard")[0].offsetWidth;
        a.left = windowWidth - d
    }
}
function IsIE() {
    return (0 <= navigator.userAgent.indexOf("MSIE") || 0 <= navigator.userAgent.indexOf("Trident")) && 0 > navigator.userAgent.indexOf("Opera") ? !0 : !1
}
function isIPad() {
    return "ipad" == navigator.userAgent.toLowerCase().match(/iPad/i)
}
function getBrowser() {
    var a = {}, d = navigator.userAgent.toLowerCase();
    window.ActiveXObject ? a.ie = d.match(/msie ([\d.]+)/)[1] : -1 < d.indexOf("firefox") ? a.firefox = d.match(/firefox\/([\d.]+)/)[1] : window.MessageEvent && !document.getBoxObjectFor && -1 < d.indexOf("chrome") ? a.chrome = d.match(/chrome\/([\d.]+)/)[1] : window.opera ? a.opera = d.match(/opera.([\d.]+)/)[1] : window.openDatabase && (a.safari = d.match(/version\/([\d.]+)/)[1]);
    return a
}
function clearPrompt() {
    1 != window.location.pathname.indexOf("snapshot/get") && 0 != $("#navbar-logo").length && ($("#navbar-logo").popover("hide"), $("#panel_footer_add_member_btn").popover("hide"), $("#btnBurndownChart").popover("hide"), $("#burnchartWeekday").popover("hide"), $("#btnShareBoard").popover("hide"), $("#ShareBox_help").popover("hide"), $("#headerBar").popover("hide"), $("#btnSetStatisticPattem").popover("hide"), $("#btnSetWeekday").popover("hide"), $("#setBurnchartCalculate").popover("hide"), $("#btnSetFinishList").popover("hide"),
        $($("#" + kanban_list_id).children()[0]).popover("hide"), $("#" + kanban_task_id).popover("hide"), $("#btnBoardPeriod").popover("hide"), $($("#" + kanban_card_input_id).children()[2]).popover("hide"))
}
function isBoardListPage() {
    return -1 != window.location.pathname.indexOf("/board_list")
}
var autoTextarea = function (a, d, b) {
    d = d || 0;
    var c = !!document.getBoxObjectFor || "mozInnerScreenX" in window, f = !!window.opera && !!window.opera.toString().indexOf("Opera"), k = function (b, c) {
            a.addEventListener ? a.addEventListener(b, c, !1) : a.attachEvent("on" + b, c)
        }, g = a.currentStyle ? function (b) {
            var c = a.currentStyle[b];
            return "height" === b && 1 !== c.search(/px/i) ? (b = a.getBoundingClientRect(), b.bottom - b.top - parseFloat(g("paddingTop")) - parseFloat(g("paddingBottom")) + "px") : c
        } : function (b) {
            return getComputedStyle(a, null)[b]
        },
        l = parseFloat(g("height"));
    a.style.resize = "none";
    var n = function () {
        var k, n;
        n = 0;
        var v = a.style;
        a._length = a.value.length;
        c || f || (n = parseInt(g("paddingTop")) + parseInt(g("paddingBottom")));
        k = document.body.scrollTop || document.documentElement.scrollTop;
        a.style.height = l + "px";
        a.scrollHeight > l && (b && a.scrollHeight > b ? (n = b - n, v.overflowY = "auto") : (n = a.scrollHeight - n, v.overflowY = "hidden"), v.height = n + d + "px", k += parseInt(v.height) - a.currHeight, document.body.scrollTop = k, document.documentElement.scrollTop = k, a.currHeight =
            parseInt(v.height))
    };
    k("propertychange", n);
    k("input", n);
    k("focus", n);
    n()
};
function resetPopupDivOffsetTop(a, d) {
    d = void 0 != d && 0 < d ? d : 0;
    var b = 0, b = getBrowser(), b = b.chrome || b.safari ? document.body.scrollHeight : document.documentElement.scrollHeight, b = b - $(window).height(), c = $(a).offset().top;
    0 < b && (b = c - b - 20 - d, b = 50 <= b ? b : 50, $(a).offset({top: b}))
}
function setPopPosition(a, d, b, c) {
    $(a).removeClass("hidden");
    var f = $("body")[0].scrollTop, f = $(d).offset().top + $(d)[0].offsetHeight + 10 - f;
    left = "right" == c ? $(d).offset().left - b + $(d)[0].offsetWidth + 4 : $(d).offset().left + 4;
    $(window).height() - $(d).offset().top < $(a)[0].offsetHeight && (f = $(d).offset().top - $(a)[0].offsetHeight);
    $(a).offset({top: f, left: left})
}
function checkValidateCode(a) {
    return 1E5 <= a || 999999 >= a ? !0 : !1
}
function saveProjectBoardSort(a, d) {
    var b = root_url + "/board_list/saveProjectBoardSort", c = $(a.target).sortable("toArray"), c = c.toString(), f = $.trim(d.item.parent().data("objectId"));
    isNaN(f) || $.post(b, {board_order: c, objectId: f})
}
function subTaskName(a) {
    var d = a.replaceAll("</br>", "\n"), d = htmlspecialchars_decode(d);
    return 140 < d.length ? (htmlspecialchars(d.substr(0, 139)) + "...").replaceAll("\n", "</br>") : a
}
function checkPhoneNumber(a) {
    return /^1[3|4|5|6|7|8|9][0-9]{1}[0-9]{8}$/.test(a)
};var request_failed = !1, showOfflineDiv = 0, isUploadRequest = !1, objDeleteBoard = {
    board_id: 0,
    isDeletedFromClosedBoardList: !1
}, unSend = !0, msgParsererror = "", myself_boards, boards_in_all_projects, projectSort;
function reopenBoard_post2Server(a) {
    $.post(root_url + "/board/reopen_board", {board_id: a}, function () {
        window.location = root_url + "/board/go/" + a
    }, "json")
}
function reopen_Board(a) {
    div_board.removeClass("hidden");
    $("#board_nav").removeClass("hidden");
    $("#closedBoard").addClass("hidden");
    var d = root_url + "/board/go/" + a.board_id, b = a.board_name;
    $("#myself_board").children(".list-group").append("<a data-board-id='" + a.board_id + "' class='list-group-item' href='" + d + "'>" + b + "</a>")
}
function ajustScroll4AndrowWeixin() {
    isAndroidWeixin() && ($(".div_block_wrapper").each(function (a) {
        new IScroll($(this)[0], {scrollY: !0, scrollX: !1, bounce: !1, eventPassthrough: "horizontal"})
    }), $(".div_block_body_wrapper").each(function (a) {
        new IScroll($(this)[0], {scrollY: !0, scrollX: !1, eventPassthrough: "horizontal"})
    }))
}
function mousewheel() {
    $(".div_block").each(function (a) {
        $(this).mousewheel(function (a) {
            a.stopPropagation()
        })
    });
    $("#divCopyList>.panel-body").mousewheel(function (a) {
        a.stopPropagation()
    })
}

function showMyOfflineDiv() {
    $("#divOffline").removeClass("hidden");
    unSend ? $("#msg").html("\u60a8\u53ef\u80fd\u5df2\u548c\u670d\u52a1\u5668\u65ad\u5f00\u8fde\u63a5\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002") : $("#msg").html("\u60a8\u63d0\u4ea4\u7684\u4fe1\u606f\u4fdd\u5b58\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002" + msgParsererror)
}
function deleteBoardFromArchivedBoardList(a, d) {
    showDeleteBoardAlertDialog();
    objDeleteBoard.board_id = a;
    objDeleteBoard.isDeletedFromClosedBoardList = !0;
    var b = $(d).offset();
    $("#divDeleteBoard_inNav").offset({top: b.top + 20, left: b.left - 150})
}
function doDeleteBoard() {
    if (objDeleteBoard.isDeletedFromClosedBoardList) {
        var a = $("#divAllArchiveBoards");
        a.find("tr.deleteBoard" + objDeleteBoard.board_id).remove();
        showNoClosedBoardText(a);
        hideDeleteBoardAlertDialog();
        deleteBoardOnServer(objDeleteBoard.board_id)
    } else objDeleteBoard.board_id = board_id, deleteBoardOnServer(objDeleteBoard.board_id), setTimeout("location.href = root_url + '/board_list';", 500)
}
function doArchiveBoard() {
    archiveBoardOnServer(board_id);
    setTimeout("location.href = root_url + '/board_list';", 500)
}
function deleteBoardOnServer(a) {
    $.post(root_url + "/board/delete_board", {board_id: a})
}
function archiveBoardOnServer(a) {
    $.post(root_url + "/board/archive_board", {board_id: a})
}
function deleteAllBoards(a) {
    showDeleteBoardAlertDialog();
    a = $(a).offset();
    $("#divDeleteBoard_inNav").offset({top: a.top - 100, left: a.left});
    $($("#divDeleteBoard_inNav").find("button")[1]).bind("click", function () {
        doDeleteAllBoards()
    })
}
function doDeleteAllBoards() {
    var a = $("#divAllArchiveBoards"), d = 0;
    $.each(a.find("tr.can_edit"), function (a, c) {
        c.remove();
        d++
    });
    0 != d && (showNoClosedBoardText(a), $.post(root_url + "/board/deleteAllboards"))
}
function showNoClosedBoardText(a) {
    0 == a.find("tr").length && (a.find("tbody").html("\u6ca1\u6709\u5df2\u5f52\u6863\u7684\u770b\u677f"), $(a.find("button")[0]).addClass("hidden"))
}
function showDeleteBoardAlertDialog() {
    $("#divDeleteBoard_inNav").css("display", "block").css("z-index", "3000")
}
function hideDeleteBoardAlertDialog() {
    $("#divDeleteBoard_inNav").css("display", "none").css("z-index", "-1000")
}
function getWsAddress() {
    var a = window.location.host;
    return "https:" == document.location.protocol ? "wss://" + a + "/wss/" : "ws://" + a + ":8081"
}
function gotoBoardList() {
    window.location.href = root_url + "/board_list"
}
function reactivate_account(a) {
    $(a).button("loading");
    $.post(root_url + "/activation/reactivate_account", function (d) {
        if (1 == d.succeed)switch (d.message) {
            case "account_has_activated":
                $(a).html("\u60a8\u7684\u8d26\u53f7\u5df2\u6fc0\u6d3b\uff0c3\u79d2\u540e\u9875\u9762\u5c06\u81ea\u52a8\u5237\u65b0");
                window.setTimeout("location.reload()", 3E3);
                break;
            case "activation_send_true":
                $(a).html("\u90ae\u4ef6\u53d1\u9001\u6210\u529f")
        } else $(a).html("\u90ae\u4ef6\u53d1\u9001\u5931\u8d25\uff0c\u8bf7\u6838\u5b9e\u90ae\u7bb1")
    })
}
function setTaskAmountOfList() {
    var a = 0, d = 0;
    $.each($("span.task-amount"), function (b, c) {
        a = getListId(c);
        d = $("div.task_view:visible").filter(function (b) {
            return $(this).closest("div.div_block").data("list_id") == a
        }).length;
        $(c).html("(" + d + ")")
    })
}
function getListId(a) {
    return $(a).closest(".list-header")[0].id.substr(5)
}
function setLaneMinWidth() {
    $("div.div_lane").css("min-width", windowWidth + "px")
};function reopenBoardFromArchivedList(a) {
    reopenBoard_post2Server(a)
};var kanban_list_id = "", kanban_task_id = "", kanban_card_input_id = "", ONE_NOTIFICATION = 1, NO_UNREAD_NOTIFICATIONS = 0, HAS_UNREAD_NOTIFICATIONS = 1, MAX_NUMBER_OF_FILES_ON_TASK = 20, MAX_NUMBER_OF_HEAD_IMAGE = 1, HEAD_IMG_STATUS_LETTER = 1, HEAD_IMG_STATUS_IMG = 2;
$(function () {
    $("#board_nav_dropdown>.panel-body").css("max-height", winHeight - 154);
    $("#divSetBackground>.panel-body").css("max-height", winHeight - 112);
    if (isBoardListPage()) {
        if (useMobileCSS()) {
            var a = $("#txtSearchBoard_inBoardListPage");
            a.prependTo("#div_main");
            a.removeClass("hidden")
        }
        $(".nav-help-btn").addClass("hidden")
    }
    loadNavBoardList();
    initSearchBoard_inBoardNavDropdown();
    $("#txtSearchBoard_inBoardListPage").focus(function () {
        $("#txtSearchBoard_inBoardListPage").animate({width: "250px"}, 200);
        $(".nav-search .fa-search").hide();
        $(".nav-search .fa-close").show();
        $("#txtSearchBoard_inBoardListPage").css("background-color", "#FFF")
    });
    $("#txtSearchBoard_inBoardListPage").blur(function () {
        0 != $.trim($("#txtSearchBoard_inBoardListPage").val()).length ? $("#txtSearchBoard_inBoardListPage").css("background-color", "#FFF") : ($("#txtSearchBoard_inBoardListPage").animate({width: "200px"}, 200), $(".nav-search .fa-search").show(), $(".nav-search .fa-close").hide(), $("#txtSearchBoard_inBoardListPage").css("background-color", "rgba(255, 255, 255, .3)"))
    })
});
function loadNavBoardList() {
    if ("undefined" != typeof myself_boards || "undefined" != typeof boards_in_all_projects) {
        var a = tmpl("template-nav-boards", [{
            objectId: 0,
            boards: myself_boards
        }]), d = tmpl("template-nav-boards", boards_in_all_projects);
        $("#divBoardsInNav").html(a + d);
        $.isEmptyObject(projectSort) || $.each(projectSort, function (a, c) {
            $.each($(".nav-project"), function (a, b) {
                $(b).attr("id") == c && $(b).insertBefore("#0")
            })
        })
    }
}
function showAddBoardDivInNavbar(a) {
    autoCloseOtherPopup();
    showAddBoardDiv();
    $("#divCreateBoard .panel-heading i").addClass("hidden");
    var d = $(a).offset().top + $(a)[0].offsetHeight + 7;
    a = {left: $(a).offset().left - $("#divCreateBoard")[0].offsetWidth + $(a)[0].offsetWidth + 4, top: d};
    setAddBoardDivPositionForMobile(a);
    $("#divCreateBoard").offset({top: a.top, left: a.left});
    $("#divCreateBoard .panel-heading .title").html("\u65b0\u5efa");
    $("#divCreateBoard").find("i.fa-long-arrow-left").show();
    arrAutoClosePopup.unshift({popupDiv: $("#divCreateBoard")});
    getEvent().stopPropagation()
}
function cancelSubmit() {
    $("input[name=new_board_name]").val("");
    $("#div_addBoard").addClass("hidden")
}
function showAddBoardPanel() {
    $("#div_addBoard").removeClass("hidden")
}
function showBoardNav() {
    $("#board_nav_dropdown").removeClass("hidden")
}
$("input:radio").change(function () {
    "T" == $("input:radio:checked").val() ? ($("#board_team").attr("disabled", !1), $("#board_team").focus()) : $("#board_team").attr("disabled", !0)
});
function showAllArchiveBoardsDiv() {
    arrAutoClosePopup.unshift({popupDiv: $("#divAllArchiveBoards")});
    getEvent().stopPropagation();
    $("#divAllArchiveBoards").modal("toggle");
    var a = $($("#divAllArchiveBoards").find("tbody")[0]);
    a.html("\u6ca1\u6709\u5df2\u5f52\u6863\u7684\u770b\u677f");
    var d = [];
    $.getJSON(root_url + "/board/get_archived_boards", function (b) {
        b = b.message;
        if (0 != b.length) {
            for (var c = 0; c < b.length; c++)d.push("<tr"), 1 == b[c].userCanReopenTheBoard && (d.push(" class='can_edit deleteBoard"), d.push(b[c].board_id),
                d.push("'")), d.push(">"), d.push("<td><span>" + b[c].board_name + "</span></td>"), 1 == b[c].userCanReopenTheBoard ? d.push("<td class='td_link'><a href='#' onclick='reopenBoardFromArchivedList(" + b[c].board_id + ");'>\u64a4\u9500\u5f52\u6863</a>&nbsp;&nbsp;&nbsp;<a href='#' style='color:#d9534f;' onclick='deleteBoardFromArchivedBoardList(" + b[c].board_id + ",this);'>\u5f7b\u5e95\u5220\u9664</a></td>") : d.push("<td>\u5df2\u88ab\u7ba1\u7406\u5458\u5f52\u6863</td>"), d.push("</tr>");
            a.html(d.join(""))
        }
    })
}
function showBackgroundSetting() {
    $("#divSetBackground").toggleClass("hidden");
    arrAutoClosePopup.unshift({popupDiv: $("#divSetBackground")});
    getEvent().stopPropagation();
    if (!(0 < $("#divSetBackground").children(".panel-body").children(".board-background-wapper").length)) {
        for (var a = "\u661f\u7a7a.jpg \u96ea\u5c71.jpg \u4f18\u7f8e\u80dc\u5730.jpg \u9ec4\u660f.jpg \u6e56\u5149\u5c71\u8272.jpg \u5c71\u5ce6.jpg \u78a7\u6d77\u84dd\u5929.jpg \u8349\u5730.jpg \u91d1\u8272\u6d77\u5cb8.jpg \u98ce\u5e73\u6d6a\u9759.jpg \u6865.jpg \u90fd\u5e02\u591c\u666f.jpg \u5e06\u8239\u9152\u5e97.jpg \u53e4\u5821.jpg \u7ebd\u7ea6.jpg \u54c8\u96f7\u6469\u6258.jpg F22.jpg BMW.jpg \u5927\u767d.jpg \u8774\u8776\u5496\u5561.jpg \u5496\u5561.jpg \u5c0f\u841d\u8389.jpg \u677e\u9f20.jpg \u732b\u54aa.jpg \u730e\u8c79.jpg \u5c0f\u72d7.jpg \u5954\u8dd1\u7684\u5c0f\u72d7.jpg \u96c4\u9e70.jpg \u5c0f\u4e11\u9c7c\u5c3c\u83ab.jpg \u6d77\u5e95\u4e16\u754c.jpg \u970d\u6bd4\u7279\u4eba\u5c0f\u5c4b.jpg \u9ea6\u7530.jpg \u90c1\u91d1\u9999.jpg \u4e00\u679d\u72ec\u79c0.jpg \u7e41\u82b1\u4f3c\u9526.jpg \u6c34\u679c.jpg".split(" "),
                 d = [], b = 0; b < a.length; b++)imgName = a[b].substring(0, a[b].length - 4), imgPath = root_url + "/application/views/images/background/min/" + a[b], d.push('<div class="board-background-wapper">'), d.push('<span class="board-background" style="background-image:url(\'' + imgPath + '\')" onclick="setBackgroundImg(this);" title="' + imgName + '"> </span>'), d.push('<i class="fa fa-spinner fa-pulse hidden"></i></div>');
        $("#divSetBackground").children(".panel-body").append(d.join(""))
    }
}
function showFeedback() {
    arrAutoClosePopup.unshift({popupDiv: $("#divFeedback")});
    getEvent().stopPropagation();
    $("#divFeedback").toggleClass("hidden");
    $("#divFeedback").hasClass("hidden") || ($("#FeedbackContent").val(""), $("#FeedbackContent").next().html(""), $("#confirmFeedback").removeClass("hidden"), $("#cancelFeedback").html('<span class="fa fa-remove"></span> \u53d6\u6d88'), $("#FeedbackContent").removeAttr("disabled"))
}
function submitFeedback() {
    var a = $("#FeedbackContent").val(), d = a.length, b = !0;
    "" == a && ($("#FeedbackContent").next().html("\u8bf7\u8f93\u5165\u60a8\u7684\u53cd\u9988"), b = !1);
    200 < d && ($("#FeedbackContent").next().html("\u5185\u5bb9\u5728200\u5b57\u4ee5\u5185"), b = !1);
    b && ($("#FeedbackContent").val("\u60a8\u7684\u53cd\u9988\u5df2\u6210\u529f\u53d1\u9001\uff0cLeangoo\u56e2\u961f\u611f\u8c22\u60a8\u7684\u652f\u6301\uff01"), $("#FeedbackContent").attr("disabled", !0), $("#confirmFeedback").addClass("hidden"), $("#cancelFeedback").html('<span class="fa fa-remove"></span> \u5173\u95ed'),
        $.post(root_url + "/user/setFeedback", {FeedbackContent: a}, function (a) {
        }, "json"))
}
function showHelpPrompt() {
    getEvent().stopPropagation();
    $("#myAccountDropdown").removeClass("open").attr("aria-expanded", !1);
    if (!isBoardListPage()) {
        $("#navbar-logo").popover("toggle");
        0 < $("#headerBar").length && show_slidebar();
        if ($("#divBurndownchart").hasClass("hidden")) {
            if ($("#qrcode").hasClass("hidden")) {
                var a = $(div_board.children()[0]).attr("id");
                if ("div_list_add" != a) {
                    var d = $($("#" + a).children()[0]);
                    d.attr("data-container", "body");
                    d.attr("data-toggle", "popover");
                    d.attr("data-placement", "right");
                    d.attr("data-trigger", "manual");
                    d.attr("data-content", "\u62d6\u62fd\u5217\u8868\u53ef\u8c03\u6574\u5217\u8868\u987a\u5e8f\uff0c\u70b9\u51fb\u5217\u8868\u540d\u79f0\u53ef\u5bf9\u5176\u8fdb\u884c\u66f4\u6539\u3002");
                    d.popover("toggle");
                    kanban_list_id = a
                }
                a = $($(div_board.children()[1]).find(".panel-body").children()[0]).attr("id");
                d = $("#" + a);
                d.attr("data-container", "body");
                d.attr("data-toggle", "popover");
                d.attr("data-placement", "bottom");
                d.attr("data-trigger", "manual");
                d.attr("data-content", "\u62d6\u62fd\u5361\u7247\u53ef\u4ee5\u8c03\u6574\u5361\u7247\u4f4d\u7f6e\u3002\u70b9\u51fb\u5361\u7247\u53ef\u5bf9\u5176\u8fdb\u884c\u66f4\u6539\uff0c\u56de\u8f66\u4fdd\u5b58\uff0cShift+Enter\u6362\u884c\u3002");
                d.popover("toggle");
                kanban_task_id = a
            }
            a = $(div_board.children()[0]).attr("id");
            d = $($("#" + a).children()[2]);
            d.attr("data-container", "body");
            d.attr("data-toggle", "popover");
            d.attr("data-placement", "right");
            d.attr("data-trigger", "manual");
            d.attr("data-content", "\u70b9\u51fb\u8f93\u5165\u5361\u7247\u5185\u5bb9\uff0c\u56de\u8f66\u4fdd\u5b58\uff0cShift+Enter\u6362\u884c\u3002");
            d.popover("toggle");
            kanban_card_input_id = a
        }
        $("#btnShareBoard").hasClass("hidden") || $("#btnShareBoard").popover("toggle");
        0 < $("#headerBar").length &&
        window.setTimeout(function () {
            $("#headerBar").popover("toggle");
            $("#panel_footer_add_member_btn").popover("toggle")
        }, 200);
        closeCurrentPopup();
        flag_shown_help = !0
    }
}
function showBurnchartHelp() {
    getEvent().stopPropagation();
    flag_shown_help = !0;
    $("#burndownchart_help").focus();
    $("#btnSetStatisticPattem").popover("toggle");
    $("#btnSetWeekday").popover("toggle");
    $("#setBurnchartCalculate").popover("toggle");
    $("#btnSetFinishList").popover("toggle");
    if (!$("#chartWapper").hasClass("hidden")) {
        var a = $("#burnchartWeekday");
        a.attr("data-container", "body");
        a.attr("data-toggle", "popover");
        a.attr("data-placement", "right");
        a.attr("data-trigger", "manual");
        a.attr("data-content",
            "\u770b\u677f\u5468\u671f\u5185\u6240\u52fe\u9009\u7684\u5de5\u4f5c\u65e5\u3002");
        a.popover("toggle")
    }
}
useDesttopCSS() && (imgBackground.onload = function () {
    HideLoadingImg()
});
function HideLoadingImg() {
    void 0 != loadingImage && (loadingImage.addClass("hidden"), $(".board-background-wapper>.fa-pulse").each(function () {
        $(this).hasClass("hidden") || $(this).addClass("hidden")
    }))
}
var loadingImage;
function setBackground2Server(a, d) {
    "undefined" != typeof share && null != share && (share.flag_boardChanged_afterPageLoad = !0);
    $.post(root_url + "/user/setBackground", {color: a, img_path: d});
    HideLoadingImg()
}
function initSearchBoard_inBoardNavDropdown() {
    $("#txtSearchBoard_inBoardNavDropdown").fastLiveFilter("div.list-group", {forceRefreshPlugin: !0})
}
function toggleBoardNavDiv() {
    var a = $("#board_nav_dropdown"), d = $("#txtSearchBoard_inBoardNavDropdown"), b = isHidden(a);
    autoCloseOtherPopup();
    b && (a.removeClass("hidden"), d.val(""), d.focus(), d.change());
    arrAutoClosePopup.unshift({popupDiv: a});
    getEvent().stopPropagation()
}
function toggleSearchBoard(a) {
    a = $("#txtSearchBoard_inBoardListPage");
    a.val("");
    a.change();
    autoCloseOtherPopup()
}
function initSearchBoard_inBoardListPage() {
    $("#divSearchBoard").removeClass("hidden");
    $("#txtSearchBoard_inBoardListPage").fastLiveFilter(".board-group", {forceRefreshPlugin: !0});
    $("#txtSearchBoard_inBoardListPage").fastLiveFilter("#divStarBoard", {
        selector: ".board_name_in_list",
        forceRefreshPlugin: !0
    })
}
function showMainNavbar() {
}
function hideMainNavbar() {
}
function closeDivAlterHeadImage() {
    $("#divAlterHeadImage").addClass("hidden");
    $("#headImageUpload").find(".files").html("")
}
function setImgAsAvatar(a) {
    $(a).find(".fa-check").removeClass("hidden");
    $(a).next().find(".fa-check").addClass("hidden");
    var d = $(a).find("img").attr("src");
    $(a).data("email");
    $("#accountSetCenter .user-pane-avatar").find(".letter").addClass("hidden");
    $("#accountSetCenter .user-pane-avatar img").removeClass("hidden");
    $("#myAccountDropdown").find("img").removeClass("hidden");
    $("#me").find(".nav-font-icon ").addClass("hidden");
    $("#myAccountDropdown").find("img").attr("src", d);
    closeDivAlterHeadImage();
    url = root_url + "/user/setImgAsAvatar";
    $.post(url)
}
function setLetterAsAvatar(a) {
    $(a).find(".fa-check").removeClass("hidden");
    $(a).prev().find(".fa-check").addClass("hidden");
    $("#accountSetCenter .user-pane-avatar img").addClass("hidden");
    $("#accountSetCenter .user-pane-avatar").find(".letter").removeClass("hidden");
    $("#myAccountDropdown").find("img").addClass("hidden");
    $("#me").find(".nav-font-icon ").removeClass("hidden");
    closeDivAlterHeadImage();
    url = root_url + "/user/setLetterAsAvatar";
    $.post(url)
}
function toggleNewsBoard() {
    $("#divDisplayNewsBoard").toggleClass("hidden");
    var a = $("#news_bell").hasClass("news-bookmark-gray");
    $("#news_bell").addClass("news-bookmark-gray");
    arrAutoClosePopup.unshift({popupDiv: $("#divDisplayNewsBoard")});
    getEvent().stopPropagation();
    a || $.post(root_url + "/user/setNewsStatus")
}
function showNotificationPopover() {
    $("#NotificationPopover").toggleClass("hidden");
    arrAutoClosePopup.unshift({popupDiv: $("#NotificationPopover")});
    getEvent().stopPropagation();
    $("#prompt_nav").find("i").data("news_status") == HAS_UNREAD_NOTIFICATIONS && (document.title = getOriginalTitle(), removeNotifyFavicon(), $("#prompt_nav").find(".badge").addClass("hidden"), $.post(root_url + "/user/updateNotificationStatus"))
}
function loadMoreNotificationOnModal() {
    var a = root_url + "/navbar/getMoreNotifications", d = {last_id: $("#notifications_modal_display").data("last_notification_id")};
    $.post(a, d, function (a) {
            1 == a.succeed && (0 == a.message.length ? $("#NotificationModal .modal-footer a").html("\u6ca1\u6709\u66f4\u591a\u4e86...") : (last_notification_id = a.message[a.message.length - 1].id, $("#notifications_modal_display").data("last_notification_id", last_notification_id), loadMoreNotifications("notifications_modal_display", a.message)))
        },
        "json")
}
function showAllArchiveProjectsDiv() {
    arrAutoClosePopup.unshift({popupDiv: $("#divAllArchiveProjects")});
    getEvent().stopPropagation();
    $("#divAllArchiveProjects").modal("toggle");
    var a = $($("#divAllArchiveProjects").find("tbody")[0]);
    a.html("\u6ca1\u6709\u5df2\u5f52\u6863\u7684\u9879\u76ee");
    var d = [];
    $.getJSON(root_url + "/project/get_archived_projects", function (b) {
        b = b.message;
        if (0 != b.length) {
            for (var c = 0; c < b.length; c++)d.push("<tr"), 1 == b[c].userCanReopenTheProject && (d.push(" class='can_edit deleteBoard"),
                d.push(b[c].objectId), d.push("'")), d.push(">"), d.push("<td><span>" + b[c].project_name + "</span></td>"), 1 == b[c].userCanReopenTheProject ? d.push("<td class='td_link'><a href='#' onclick='reopenProjectFromArchivedList(" + b[c].objectId + ");'>\u64a4\u9500\u5f52\u6863</a>") : d.push("<td>\u5df2\u88ab\u9879\u76ee\u7ba1\u7406\u5458\u5f52\u6863</td>"), d.push("</tr>");
            a.html(d.join(""))
        }
    })
}
function reopenProject_post2Server(a) {
    $.post(root_url + "/project/reopen_project", {objectId: a}, function () {
        window.location = root_url + "/project/go/" + a
    }, "json")
}
function reopenProjectFromArchivedList(a) {
    reopenProject_post2Server(a)
}
function visitUrl(a) {
    window.open($(a).find("a").attr("href"))
}
function stopPropagate() {
    event.stopPropagation()
}
function searchInBoardList() {
    $("#txtSearchBoard_inBoardListPage").focus();
    $("#txtSearchBoard_inBoardListPage").animate({width: "250px"}, 200)
}
function closeBoardListSearch() {
    $("#txtSearchBoard_inBoardListPage").animate({width: "200px"}, 200);
    $("#txtSearchBoard_inBoardListPage").css("background-color", "rgba(255, 255, 255, .3)");
    $(".nav-search .fa-search").show();
    $(".nav-search .fa-close").hide();
    toggleSearchBoard()
}var currentBoardId = 0, currentStarBoardDiv = null, KANBAN_DATE_DESC_SORT = 1, KANBAN_DATE_ASC_SORT = 2, KANBAN_CUSTOM_SORT = 3, KANBAN_NAME_ASC_SORT = 4, KANBAN_NAME_DESC_SORT = 5, divMyBoard = $("#divMyBoard"), PUBLIC_BOARD_IN_PROJECT = 1, PRIVATE_BOARD_IN_PROJECT = 2;
$(function () {
    var a = $("#divStarBoard"), d = $("#div_main").children()[0];
    0 == $(a).children().length && $(d).addClass("hidden");
    $("#div_main_wrapper").css("height", winHeight);
    initSearchBoard_inBoardListPage();
    setHotKey_inBoardListPage();
    //setAjaxError();
    //setProjectBoardSortable();
    //setBoardSortable();
    $($("#my_board_tools").children()[0]).find(".active").hasClass("sort-btn-last") 
});
function setHotKey_inBoardListPage() {
    $(document).bind("keydown./", {}, function (a) {
        a.stopPropagation();
        a.preventDefault();
        $("#txtSearchBoard_inBoardListPage").focus();
        return !1
    })
}
function showAddBoardDivInMainView(a, d) {
    showAddBoardDiv();
    var b = $(a).offset().top, c = {left: $(a).offset().left, top: b};
    setAddBoardDivPositionForMobile(c);
    $("#divCreateBoard").offset({top: c.top, left: c.left});
    var b = b + 368, f = $(window).height(), b = b > f ? f - 375 : c.top;
    $("#divCreateBoard").offset({top: b});
    openAddBoardDivInProject(d);
    arrAutoClosePopup.unshift({popupDiv: $("#divCreateBoard")});
    getEvent().stopPropagation()
}
function toggleBigStar(a) {
    $(a).toggleClass("star_big")
}
function setStarBoard(a, d) {
    a.stopPropagation();
    $("#divArchiveBoardInBoardList").css("display", "none");
    var b = $("#divStarBoard"), c = $(d).parent().data("board_id"), f, k = $("#div_main").children()[0];
    if ($(d).hasClass("bright-star"))f = "N", $(b).children("div").each(function () {
        $(this).data("board_id") == c && $(this).remove()
    }), $("div.board-group>.board_in_list").each(function () {
        if ($(this).data("board_id") == c) {
            var a = $(this).children("span")[0];
            $(a).toggleClass("bright-star");
            a.title = "\u8bbe\u4e3a\u661f\u6807\u770b\u677f"
        }
    }),
    0 == $(b).children().length && $(k).addClass("hidden"); else {
        f = "Y";
        $(d).toggleClass("bright-star");
        d.title = "\u53d6\u6d88\u661f\u6807\u770b\u677f";
        var g = $(d).parent().clone(), l = $(d).parent().parent(), n = "";
        $(l).hasClass("project") && (n = $(l).prev().find(".project-link").html());
        $(g).children(".fa").removeClass("star_big");
        addAStarBoard(c, $(g), n);
        $(g).children().first().addClass("board_name_in_list");
        $(g).appendTo(b);
        $(g).find(".tools-on-board").html("");
        $(k).removeClass("hidden");
        $("#boardfilterNoResult_inStarBoardList").addClass("hidden")
    }
    toggleStarBoardOnServer(c,f)
}
function toggleStarBoardOnServer(a, d) {
    $.post(root_url + "/board/toggleStarBoard", {board_id: a, star_flag: d})
}
function loadStarBoards(a) {
    0 != a.length && ($(".star-section").removeClass("hidden"), $(a).each(function () {
        addAStarBoard(this.board_id, $("#divStarBoard"), this.project_name)
    }))
}
function addAStarBoard(a, d, b) {
    var c = d;
    if ("divStarBoard" == d[0].id) {
        var f = '<div class="board_in_list" data-board_id="' + a + '" onclick="openUrl(\'' + (root_url + "/board/go/" + a) + '\');"><div class="elli board_name_in_list"></div><span class="fa fa-star-o star bright-star" title="\u53d6\u6d88\u661f\u6807\u770b\u677f" onmouseenter="toggleBigStar(this);" onmouseleave="toggleBigStar(this);" onclick="setStarBoard(event,this);"></span></div>';
        $(d).append(f);
        c = $(d).children().last()
    }
    $.getJSON(root_url + "/board_list/getOneBoardStat/" +
        a, function (f) {
        if (0 != f.succeed)if (f = f.message, "divStarBoard" == d[0].id) {
            var g = f.board_name;
            $(c).children("div.board_name_in_list").attr("title", g);
            $(c).children("div.board_name_in_list").html(g);
            $(c).append(getStatDataHtmlOfStarBoard(f, a, b))
        } else $(d).append(getStatDataHtmlOfStarBoard(f, a, b))
    })
}
function getStatDataHtmlOfStarBoard(a, d, b) {
    b = displayProjectName(b);
    switch (a.error_message) {
        case "no data":
            return "<div class='gray-details star-details'><label>\u770b\u677f\u6682\u65e0\u7edf\u8ba1\u6570\u636e\uff01</label></div>" + b;
        case "no finish list":
            return '<div class="gray-details star-details"><label>\u8bf7\u8bbe\u7f6e\u71c3\u5c3d\u56fe\u7684\u5b8c\u6210\u5217\uff0c\u5426\u5219\u65e0\u6cd5\u7edf\u8ba1\u5df2\u5b8c\u6210\u6570\u91cf\uff01</label></div></div>' + b;
        case "not_set_board_period":
            return '<div class="gray-details star-details"><label>\u770b\u677f\u672a\u8bbe\u7f6e\u5468\u671f\uff0c\u65e0\u6cd5\u8fdb\u884c\u6570\u636e\u7edf\u8ba1\uff01</label></div></div>' +
                b
    }
    if ("0000-01-01" == a.flag_board_range)return '<div class="gray-details star-details"><label>\u770b\u677f\u672a\u8bbe\u7f6e\u5468\u671f\uff0c\u65e0\u6cd5\u8fdb\u884c\u6570\u636e\u7edf\u8ba1\uff01</label></div></div>' + b;
    var c = '<div class="starBoardStatusCursor hidden"><span class="fa fa-cog" title="\u8bbe\u7f6e\u770b\u677f\u8fdb\u5ea6\u504f\u5dee\u9600\u503c" onclick="toggleColorThreshold(event,' + d + ",'" + a.isBoardOwner + "');\"></span></div>", f = parseFloat(a.finished_amount).toFixed(1), k = parseFloat(a.unfinished_amount).toFixed(1),
        c = c + ('<label class="board_in_list_stat">' + a.total_amount_disc + ":" + removeZero(a.total_amount.toFixed(1)) + "</label>"), c = c + ('<label class="board_in_list_stat">\u5df2\u5b8c\u6210:' + removeZero(f) + "</label>"), c = c + ('<label class="board_in_list_stat">\u5269\u4f59:' + removeZero(k) + "</label>"), c = c + ('<div class="progress"><div class="progress-bar ' + a.board_status_color + '" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: ' + a.finishedPercent + '%;">' + a.finishedPercent + "%</div></div>"),
        c = c + ('<span class="fa fa-cog gray-details progress-set" title="\u8bbe\u7f6e\u770b\u677f\u8fdb\u5ea6\u504f\u5dee\u9600\u503c" onclick="toggleColorThreshold(event,' + d + ",'" + a.isBoardOwner + "');\"></span>");
    return c + b
}
function displayProjectName(a) {
    return $.isEmptyObject(a) ? "" : "<div class='star-project-name gray-details' title='" + a + "'>" + a + "</div>"
}
function toggleColorThreshold(a, d, b) {
    if (!useMobileCSS()) {
        a.stopPropagation();
        currentBoardId = d;
        var c = $("#divSetColorThreshold"), f = isShown(c);
        autoCloseOtherPopup();
        if (!f) {
            arrAutoClosePopup.unshift({popupDiv: c});
            a.stopPropagation();
            c.removeClass("hidden");
            $("#pSaveColorThresholdResult").html("");
            currentStarBoardDiv = $(a.target).parents(".board_in_list");
            a = currentStarBoardDiv.offset();
            c.offset({top: a.top + 140, left: a.left});
            var k = $("#txtColorThreshold_alert"), g = $("#txtColorThreshold_danger");
            "Y" == b ? (c.children(".panel-footer").removeClass("hidden"),
                k.attr("disabled", !1), g.attr("disabled", !1)) : (c.children(".panel-footer").addClass("hidden"), k.attr("disabled", "disabled"), g.attr("disabled", "disabled"));
            $.getJSON(root_url + "/board_list/getColorThreshold/" + d, function (a) {
                a.succeed && (k.val(a.message.alert_threshold), g.val(a.message.danger_threshold))
            })
        }
    }
}
function saveColorThreshold() {
    var a = $("#txtColorThreshold_alert"), d = $("#txtColorThreshold_danger"), b = trimAnddeleteEnter(a.val()), c = trimAnddeleteEnter(d.val());
    if (0 == b.length || 2 < b.length || !checkunNegativeInteger(b) || 0 > parseInt(b) || 99 < parseInt(b))a.val(""), a.focus(), $("#pSaveColorThresholdResult").html("\u504f\u5dee\u503c\u5fc5\u987b\u662f0\u81f399\u7684\u6574\u6570"); else if (0 == c.length || 2 < c.length || !checkunNegativeInteger(c) || 0 > parseInt(c) || 99 < parseInt(c))d.val(""), d.focus(), $("#pSaveColorThresholdResult").html("\u504f\u5dee\u503c\u5fc5\u987b\u662f0\u81f399\u7684\u6574\u6570");
    else if (b = parseInt(b), c = parseInt(c), b > c)d.focus(), $("#pSaveColorThresholdResult").html("\u7d05\u8272\u9884\u8b66\u7684\u504f\u5dee\u503c\u4e0d\u80fd\u5c0f\u4e8e\u9ec4\u8272\u9884\u8b66"); else {
        var a = currentStarBoardDiv.find(".fa-circle"), d = currentStarBoardDiv.find("progress").parent(), f = a.data("indicator"), k = "", g = "";
        f <= b ? (k = "normal", g = "\u6b63\u5e38") : f <= c ? (k = "alert", g = "\u9ec4\u8272\u9884\u8b66") : (k = "danger", g = "\u7ea2\u8272\u9884\u8b66");
        a.removeClass("board_status_alert");
        a.removeClass("board_status_danger");
        a.removeClass("board_status_normal");
        a.addClass("board_status_" + k);
        a.next().html(g);
        d.removeClass("progress_color_normal");
        d.removeClass("progress_color_alert");
        d.removeClass("progress_color_danger");
        d.addClass("progress_color_" + k);
        closeCurrentPopup();
        $.post(root_url + "/board_list/saveColorThreshold", {board_id: currentBoardId, alert: b, danger: c})
    }
}
//function setProjectBoardSortable() {
//    $(".project").sortable({
//        cursor: "move",
//        forcePlaceholderSize: !0,
//        helper: "clone",
//        connectScrollContailer: $("#div_main_wrapper"),
//        containment: $("#div_main"),
//        items: ".real_board",
//        start: function () {
//            autoCloseOtherPopup();
//            clearPrompt()
//        },
//        update: function (a, d) {
//            saveProjectBoardSort(a, d)
//        },
//        stop: function (a, d) {
//        }
//    }).disableSelection()
//}
//function setStarBoardSortable() {
//    $("#divStarBoard").sortable({
//        cursor: "move",
//        forcePlaceholderSize: !0,
//        helper: "clone",
//        connectScrollContailer: $("#div_main_wrapper"),
//        containment: $("#divStarBoard"),
//        items: ".board_in_list",
//        start: function () {
//            autoCloseOtherPopup();
//            clearPrompt()
//        },
//        update: function (a, d) {
//            saveStarBoardSort(a, d)
//        },
//        stop: function (a, d) {
//        }setBoardSortableInProject
//    }).disableSelection()
//}
function saveStarBoardSort(a, d) {
    var b = root_url + "/board_list/saveStarBoardSort", c = $(a.target).sortable("toArray"), c = c.toString();
    $.post(b, {board_order: c})
}
//function setBoardSortable() {
//    divMyBoard.sortable({
//        cursor: "move",
//        forcePlaceholderSize: !0,
//        helper: "clone",
//        connectScrollContailer: $("#div_main_wrapper"),
//        containment: divMyBoard,
//        items: ".real_board",
//        start: function () {
//            autoCloseOtherPopup();
//            clearPrompt()
//        },
//        update: function (a, d) {
//            saveBoardSort(a, d)
//        },
//        stop: function (a, d) {
//        }
//    }).disableSelection()
//}
function saveBoardSort(a, d) {
    var b = $($("#my_board_tools").children()[0]).find(".active");
    if (!b.hasClass("sort-btn-last"))return !1;
    var c = root_url + "/board_list/saveBoardSort", f = $(a.target).sortable("toArray"), f = f.toString();
    $.post(c, {board_order: f, sort_type: KANBAN_CUSTOM_SORT});
    b.hasClass("fa-sort") || (b.removeClass("active"), c = $("#sortCustomBtn"), c.parent().addClass("active"), c.next().addClass("fa-sort"), removeIcon(b.find("i"), !1))
}
function chooseSortType(a) {
    var d = $($(a).children()[0])[0], b = $($(a).children()[1])[0], c = root_url + "/board_list/updateBoardSortType";
    if ($(a).hasClass("active"))switch (d.id) {
        case "sortTimeBtn":
            $(b).hasClass("fa-long-arrow-up") ? ($(b).removeClass("fa-long-arrow-up"), $(b).addClass("fa-long-arrow-down"), reSortBoard("fa-long-arrow-down"), $.post(c, {boardSortType: KANBAN_DATE_DESC_SORT})) : ($(b).removeClass("fa-long-arrow-down"), $(b).addClass("fa-long-arrow-up"), reSortBoard("fa-long-arrow-up"), $.post(c, {boardSortType: KANBAN_DATE_ASC_SORT}));
            break;
        case "sortNameBtn":
            $(b).hasClass("fa-sort-alpha-asc") ? ($(b).removeClass("fa-sort-alpha-asc"), $(b).addClass("fa-sort-alpha-desc"), $.post(c, {boardSortType: KANBAN_NAME_DESC_SORT}, function (a) {
                1 == a.succeed && resortBoard(a.message)
            }, "json")) : ($(b).removeClass("fa-sort-alpha-desc"), $(b).addClass("fa-sort-alpha-asc"), $.post(c, {boardSortType: KANBAN_NAME_ASC_SORT}, function (a) {
                1 == a.succeed && resortBoard(a.message)
            }, "json"));
            break;
        case "sortCustomBtn":
            if ($(a).parent().find(".active"))break;
            $.post(c, {boardSortType: KANBAN_CUSTOM_SORT})
    } else switch (a =
        $(a).parent().find(".active").find("i"), removeIcon(a, !0), d.id) {
        case "sortTimeBtn":
            $(b).addClass("fa-long-arrow-down");
            disableBoardSortable();
            reSortBoard("fa-long-arrow-down");
            $.post(c, {boardSortType: KANBAN_DATE_DESC_SORT});
            break;
        case "sortNameBtn":
            $(b).addClass("fa-sort-alpha-asc");
            disableBoardSortable();
            $.post(c, {boardSortType: KANBAN_NAME_ASC_SORT}, function (a) {
                1 == a.succeed && resortBoard(a.message)
            }, "json");
            break;
        case "sortCustomBtn":
            $(b).addClass("fa-sort"), enableBoardSortable(), $.post(c, {boardSortType: KANBAN_CUSTOM_SORT},
                function (a) {
                    null == a.message[0].position ? reSortBoard("fa-long-arrow-down") : 1 == a.succeed && resortBoard(a.message)
                }, "json")
    }
}
function resortBoard(a) {
    for (var d = [], b = divMyBoard.find(".real_board"), c = 0; c < a.length; c++)$.each(b, function (b, k) {
        a[c].board_id == $(k).data("board_id") && (d[c] = $(k).clone(!0))
    });
    $.each(b, function (a, b) {
        $(b).replaceWith(d[a])
    })
}
function removeIcon(a, d) {
    a.removeClass("fa-long-arrow-up");
    a.removeClass("fa-long-arrow-down");
    a.removeClass("fa-sort-alpha-asc");
    a.removeClass("fa-sort-alpha-desc");
    d && a.removeClass("fa-sort")
}
function reSortBoard(a) {
    var d = root_url + "/board_list/js_get_board_with_sort", b = [], c = 0, f = 0;
    $.each(divMyBoard.find(".real_board"), function (a, c) {
        b[a] = $(c).clone(!0)
    });
    switch (a) {
        case "fa-long-arrow-up":
            for (c = 0; c < b.length; c++)for (f = c + 1; f < b.length; f++)parseInt($(b[c]).data("board_id")) > parseInt($(b[f]).data("board_id")) && (temp = b[c], b[c] = b[f], b[f] = temp);
            c = 0;
            $.each(divMyBoard.find(".real_board"), function (a, c) {
                $(c).replaceWith(b[a])
            });
            break;
        case "fa-long-arrow-down":
            for (c = 0; c < b.length; c++)for (f = c + 1; f < b.length; f++)parseInt($(b[c]).data("board_id")) <
            parseInt($(b[f]).data("board_id")) && (temp = b[c], b[c] = b[f], b[f] = temp);
            c = 0;
            $.each(divMyBoard.find(".real_board"), function (a, c) {
                $(c).replaceWith(b[a])
            });
            break;
        case "fa-sort-alpha-asc":
            $.post(d, {boardSortType: KANBAN_NAME_ASC_SORT}, function (a) {
            }), c = 0, $.each(divMyBoard.find(".real_board"), function (a, c) {
                $(c).replaceWith(b[a])
            })
    }
}
function showArchiveBoardDiv(a, d) {
    a.stopPropagation();
    currentBoardId = d;
    var b = $("#divArchiveBoardInBoardList");
    setPopupDivPosition(b, currentBoardId)
}
function setPopupDivPosition(a, d) {
    var b = $("div.board-group>.board_in_list[data-board_id=" + d + "]"), c = b.offset().top + a.outerHeight() + b.outerHeight(), f = $(window).height(), c = c > f ? f - c + 95 : 100;
    "none" == a.css("display") ? (autoCloseOtherPopup(), a.insertAfter(b.find(".tools-on-board")), a.css({
        display: "block",
        top: c,
        left: 0
    })) : a.css("display", "none");
    arrAutoClosePopup.unshift({popupDiv: a});
    getEvent().stopPropagation()
}
function archiveBoard(a) {
    a.stopPropagation();
    a = currentBoardId;
    archiveBoardOnServer(a);
    $("#divArchiveBoardInBoardList").css("display", "none").insertAfter($("#divMyBoard"));
    $(".board_in_list[data-board_id=" + a + "]").remove()
}
//function disableBoardSortable() {
//    divMyBoard.sortable("disable")
//}
//function enableBoardSortable() {
//    divMyBoard.sortable("enable")
//}
function loadBoards() {
    $("#divMyBoard").html(tmpl("template-board-group", {objectId: 0, boards: myself_boards}));
    $(tmpl("template-one-project", boards_in_all_projects)).insertBefore(".archive-category:first")
}
function setProjectTop(a) {
    a = $(a).parents("div.project-section");
    var d = "";
    if (!a.hasClass("project-sort") || 1 != a.prev("div.star-section").length && 0 != a.prev().length)$(a).addClass("project-sort"), $(a).insertAfter(".star-section"), $.each($(".project-sort"), function (a, c) {
        d += $(c).attr("id") + ","
    }), $.post(root_url + "/board_list/setProjectSort", {projectSort: d})
};var me = {is_project_admin: !1}, project_name_before_edit = "", project_description_before_edit = "", boardPane = $("#boardPane"), projectList = $("#projectList");
function divAddBoard(a) {
    var d = $("#pannelAddBoard"), b = $("#altProOption"), c = $("#inputBoardName");
    $("#divCreateBoard .panel-heading .title").html("\u65b0\u5efa\u770b\u677f");
    $("#divCreateBoard").removeClass("hidden");
    $("#divCreateBoard .panel-body").find(".ul-one").addClass("hidden");
    d.removeClass("hidden");
    d.find(".ul-two").addClass("hidden");
    d.find("p").removeClass("hidden");
    $("#divCreateBoard .panel-heading i").removeClass("hidden");
    dispalyProPubItem();
    c.val("");
    c.focus();
    loadProjectItems(b, a);
    clearErrorWarning($("#pannelAddBoard_war"));
    $("#inputBoardName,#altProOption,#altBoardVisibilityP a").focus(function () {
        clearErrorWarning($("#pannelAddBoard_war"))
    })
}
function loadProjectItems(a, d) {
    a.find(".project-items").remove();
    var b = !1;
    $.get("/project/mylist", function (c) {
        if (1 == c.succeed) {
            var f = [];
            $.each(c.message.data, function (a, c) {
                f.push(htmlProjectItem(c.objectId, c.projectName));
                !b && 0 < d && d == c.objectId && (b = !0)
            });
            a.append(f.join(""));
            0 < d && (b || (projectList.append(htmlProjectItem(g_board.objectId, g_board.projectName)), projectList.parent().nextAll("a").addClass("hidden")), a.val(d))
        }
    })
}
function htmlProjectItem(a, d) {
    return '<option class="project-items" value ="' + a + '">' + d + "</option>"
}
function divAddProject() {
    var a = $("#inputProjectName");
    $("#divCreateBoard .panel-body").find(".ul-one").addClass("hidden");
    $("#pannelAddProject").removeClass("hidden");
    $("#divCreateBoard .panel-heading i").removeClass("hidden");
    $("#divCreateBoard .panel-heading .title").html("\u65b0\u5efa\u9879\u76ee");
    clearErrorWarning($("#pannelAddProject_war"));
    a.val("");
    a.focus();
    $("#textareaProDescription").val("");
    $("#inputProjectName,#textareaProDescription").focus(function () {
        clearErrorWarning($("#pannelAddProject_war"))
    });
    arrAutoClosePopup.unshift({popupDiv: $("#divCreateBoard")});
    getEvent().stopPropagation()
}
function backToPannel() {
    $("#pannelAddBoard").addClass("hidden");
    $("#pannelAddProject").addClass("hidden");
    $("#divCreateBoard .panel-heading .title").html("\u65b0\u5efa");
    $("#divCreateBoard .panel-body").find(".ul-one").removeClass("hidden");
    $("#divCreateBoard .panel-heading i").addClass("hidden")
}
function change_board_limit(a) {
    $(a).parent().addClass("hidden");
    $("#pannelAddBoard").find(".ul-two").removeClass("hidden")
}
function confirm_board_limit(a) {
    var d = $(a).data("limit");
    $(a).find(".fa-check").removeClass("hidden");
    $(a).parent().siblings().find(".fa-check").addClass("hidden");
    "visible" == d ? dispalyProPubItem() : ($("#pannelAddBoard p").data("limit", PRIVATE_BOARD_IN_PROJECT), $("#pannelAddBoard p").find("strong").html("\u770b\u677f\u6210\u5458\u53ef\u89c1"));
    $("#pannelAddBoard").find(".ul-two").addClass("hidden");
    $("#pannelAddBoard p").removeClass("hidden")
}
function dispalyProPubItem() {
    $("#pannelAddBoard p").data("limit", PUBLIC_BOARD_IN_PROJECT);
    $("#pannelAddBoard p").find("strong").html("\u9879\u76ee\u6210\u5458\u53ef\u89c1");
    $("#pannelAddBoard .ul-two li").first().find(".fa-check").removeClass("hidden");
    $("#pannelAddBoard .ul-two li").last().find(".fa-check").addClass("hidden")
}
function confirmCreateNewProject(a) {
    var d = $("#inputProjectName").val(), b = $("#textareaProDescription").val(), c = d.length, f = b.length, k = $("#pannelAddProject_war"), g = !0;
    "" == d && (displayErrorWarning(k, "\u9879\u76ee\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a"), g = !1);
    g && 100 < c && (displayErrorWarning(k, "\u9879\u76ee\u540d\u79f0\u4e0d\u80fd\u8d85\u8fc7100\u5b57\u7b26"), g = !1);
    if (c = !0, 800 < f)displayErrorWarning(k, "\u63cf\u8ff0\u4e0d\u80fd\u8d85\u8fc7800\u5b57\u7b26"), c = !1;
    if (g && c) {
        if (useDesttopCSS())var l = $(a).button("loading");
        $.post("/project/add", {projectName: d, projectDescription: b}, function (a) {
            $("#divCreateBoard").addClass("hidden");
            location.reload();
            //1 == a.succeed ? ($("#divCreateBoard").addClass("hidden"), a = "/project/edit?objectId=" + a.message.objectId, window.location.href = a) : useDesttopCSS() && l.button("reset")
        })
    }
}
function confirmCreateNewBoard(a) {
    var d = $.trim($("#inputBoardName").val()), b = $("#altProOption option:selected").val(), c = $("#pannelAddBoard p").data("limit"), f = d.length, k = $("#pannelAddBoard_war"), g = !0;
    0 == f && (displayErrorWarning(k, "\u770b\u677f\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a"), g = !1);
    g && 100 < f && (displayErrorWarning(k, "\u770b\u677f\u540d\u79f0\u4e0d\u80fd\u8d85\u8fc7100\u5b57\u7b26"), g = !1);
    if (g) {
        if (useDesttopCSS())var l = $(a).button("loading");
        $.post("/task/add", {
            boardName: d, proId: b,
            visibility: c
        }, function (a) {
            $("#divCreateBoard").addClass("hidden");
            location.reload();
            //1 == a.succeed ? ($("#divCreateBoard").addClass("hidden"), window.location.href = root_url + "/board/go/" + a.message) : useDesttopCSS() && l.button("reset")
        })
    }
}
function showChangeProMemPerDiv(a) {
    autoCloseOtherPopup();
    var d = $("#divChangePermit li"), b = $(a).data("is_admin"), c = $(a).data("email");
    setPopPosition($(divChangePermit), a, 300, "right");
    "N" == b ? (d.first().find(".fa-check").addClass("hidden"), d.last().find(".fa-check").removeClass("hidden")) : (d.first().find(".fa-check").removeClass("hidden"), d.last().find(".fa-check").addClass("hidden"));
    $("#divChangePermit").data("email", c);
    arrAutoClosePopup.unshift({popupDiv: $("#divChangePermit")});
    getEvent().stopPropagation()
}
function changeProMemPer(a) {
    var d = $("#divChangePermit"), b = d.data("email"), c = $(a).data("is_admin"), f = "";
    if ($(a).find(".fa-check").hasClass("hidden")) {
        var k = {email: b, is_admin: c, objectId: objectId}, g = root_url + "/project/changeProMemPermission";
        $(a).find(".fa-check").removeClass("hidden");
        $(a).parent().siblings().find(".fa-check").addClass("hidden");
        f = "Y" == c ? '\u7ba1\u7406\u5458<span class="caret"></span>' : '\u666e\u901a\u6210\u5458<span class="caret"></span>';
        $("#memberPane").find(".pro-mem-item").each(function (a) {
            $(this).data("email") ==
            b && (a = $($(this).find(".control").children()[0]), a.data("is_admin", c), a.html(f))
        });
        d.addClass("hidden");
        $.post(g, k, function (a) {
        })
    }
}
function showRemoveProMemDiv(a) {
    autoCloseOtherPopup();
    var d = $("#divRemoveMem"), b = $(a).parent().prev().find("p").first().html();
    setPopPosition($(d), a, 300, "right");
    $(d).data("name", b);
    $(d).data("email", $(a).data("email"));
    arrAutoClosePopup.unshift({popupDiv: $("#divRemoveMem")});
    getEvent().stopPropagation()
}
function showAddProMemDiv(a) {
    autoCloseOtherPopup();
    var d = $("#proAddMemInput"), b = $("#pannelAddProMem_war");
    setPopPosition($("#divProAddMem"), a, 400, "right");
    clearErrorWarning($(b));
    $(d).val("");
    $(d).focus(function () {
        clearErrorWarning($(b))
    });
    $("#proAddMemInput").focus();
    arrAutoClosePopup.unshift({popupDiv: $("#divProAddMem")});
    getEvent().stopPropagation()
}
function openProjectBoards(a) {
    location.href = root_url + "/project/go/" + a
}
function openProjectUsers(a) {
    location.href = root_url + "/project/go/" + a + "/user"
}
function addProMemBtn() {
    var a = $("#proAddMemInput"), d = objectId, b = $("#pannelAddProMem_war"), a = $.trim($(a).val()), c = a.split(","), f = c.length, k = $("#pannelAddProMem_btn"), g = !0;
    0 == a && ($("#proAddMemInput").focus(), g = !1);
    !$.isNumeric(d) && g && (displayErrorWarning(b, "\u9879\u76ee\u6709\u8bef\uff01"), g = !1);
    20 < f && g && (displayErrorWarning(b, "\u4e00\u6b21\u6700\u591a\u9080\u8bf720\u4f4d\u6210\u5458"), g = !1);
    1 == f && g && !check_email(c[0]) && (displayErrorWarning(b, "\u90ae\u7bb1\u683c\u5f0f\u6709\u8bef\uff01"), g = !1);
    g &&
    ($(k).button("loading"), $.post(root_url + "/project/addMem", {pro_id: d, email_str: a}, function (a) {
        var c = [], d = [], f = [];
        clearErrorWarning($(b));
        1 == a.succeed ? (0 != a.message.err_email.length && ($.each(a.message.err_email, function (a, e) {
            c.push(e)
        }), b.append(c.join("\uff0c") + " \u683c\u5f0f\u6709\u8bef\u3002<br>")), 0 != a.message.success_email.exist_email.length && ($.each(a.message.success_email.exist_email, function (a, e) {
            d.push(e)
        }), b.append(d.join("\uff0c") + " \u5df2\u5b58\u5728\u3002<br>")), 0 != a.message.success_email.new_email.length &&
        ($.each(a.message.success_email.new_email, function (a, e) {
            f.push(e.email)
        }), b.append(f.join("\uff0c") + " \u6dfb\u52a0\u6210\u529f\u3002<br>"), $("#memberPane .member-list").append(tmpl("template-project-members", a.message.success_email.new_email)))) : 0 != a.message.common_err.length && b.append(a.message.common_err);
        b.removeClass("hidden");
        $(k).button("reset")
    }))
}
function showArchiveProjectDiv(a) {
    setPopPosition($("#divArchiveProject"), a, 300, "right");
    arrAutoClosePopup.unshift({popupDiv: $("#divArchiveProject")});
    getEvent().stopPropagation()
}
function doArchiveProject() {
    $.post(root_url + "/project/archive_project", {objectId: objectId});
    setTimeout("location.href = root_url + '/board_list';", 500)
}
function loadProjectBoards(a) {
    boardPane.append(tmpl("template-project-boards", a))
}
function loadProjectMember(a) {
    $("#memberPane .member-list").html(tmpl("template-project-members", a))
}
function remove_project_user() {
    var a = $("#divRemoveMem"), d = a.data("email"), b = a.data("name"), b = {
        objectId: objectId,
        email: d,
        nick_name: b
    }, c = root_url + "/project/remove_project_user";
    a.addClass("hidden");
    $.post(c, b, function (a) {
        1 == a.succeed && $("#memberPane").find(".pro-mem-item").each(function (a) {
            $(this).data("email") == d && ($(this).prev().remove(), $(this).remove())
        })
    })
}
function setUserPermissionOnPage() {
    me.is_project_admin || ($("#archiveProjectBtn").addClass("disabled"), $("#archiveProjectBtn").attr("onclick", "null"), $("div.project-edit-div").find('input[name="edit_project_name"]').attr("disabled", "disabled"), $("div.project-edit-div").find('textarea[name="edit_project_description"]').attr("disabled", "disabled"), $("div.project-pane-details").find("a").attr("disabled", "disabled"), $("#saveProjectInfoBtn").addClass("disabled"));
    me.is_project_admin && !isShown($("#email_activate_prompt")) ||
    $("#aAddProjecUser").addClass("disabled").attr("onclick", "null")
}
function showAddBoardDivInProject(a, d) {
    showAddBoardDiv();
    var b = $(a).offset().top, b = {left: $(a).offset().left, top: b};
    setAddBoardDivPositionForMobile(b);
    $("#divCreateBoard").offset({top: b.top, left: b.left});
    openAddBoardDivInProject(d);
    arrAutoClosePopup.unshift({popupDiv: $("#divCreateBoard")});
    getEvent().stopPropagation()
}
function openAddBoardDivInProject(a) {
    divAddBoard(a);
    $("#divCreateBoard .panel-heading .title").html("\u65b0\u5efa\u770b\u677f");
    $("#divCreateBoard").find("i.fa-long-arrow-left").hide()
}
function edit_project_information() {
    var a = $(".project-pane-details"), d = $(".project-edit-div"), b = a.children("h1").text().trim(), a = a.children("p").text().trim();
    d.find('input[name="edit_project_name"]').val(b);
    d.find('textarea[name="edit_project_description"]').val(a);
    project_name_before_edit = b;
    project_description_before_edit = a;
    $(".project-pane-details").addClass("hidden");
    $(".project-edit-div").removeClass("hidden");
    autoCloseOtherPopup()
}
function close_edit_project_div() {
    $(".lbl-edit-project-name-msg").html("");
    $(".lbl-edit-project-name-msg").parent().addClass("hidden");
    $(".lbl_edit-project-description-msg").html("");
    $(".lbl_edit-project-description-msg").parent().addClass("hidden");
    $(".project-pane-details").removeClass("hidden");
    $(".project-edit-div").addClass("hidden")
}
function save_project_information() {
    var a = $(".project-edit-div"), d = a.find('input[name="edit_project_name"]').val().trim(), b = a.find('textarea[name="edit_project_description"]').val().trim(), c = root_url + "/project/edit_project_information";
    0 == d.length ? ($(".lbl-edit-project-name-msg").html("\u9879\u76ee\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a"), $(".lbl-edit-project-name-msg").parent().removeClass("hidden"), a.find('input[name="edit_project_name"]').focus()) : 100 < d.length ? ($(".lbl-edit-project-name-msg").html("\u9879\u76ee\u540d\u79f0\u4e0d\u80fd\u8d85\u8fc7100\u5b57\u7b26"),
        $(".lbl-edit-project-name-msg").parent().removeClass("hidden")) : 800 < b.length ? ($(".lbl_edit-project-description-msg").html("\u9879\u76ee\u63cf\u8ff0\u4e0d\u80fd\u8d85\u8fc7800\u5b57\u7b26"), $(".lbl_edit-project-description-msg").parent().removeClass("hidden")) : project_name_before_edit == d && project_description_before_edit == b ? close_edit_project_div() : (project_name_before_edit = d, project_description_before_edit = b, $(".project-pane-details").children("h1").text(d), $(".project-pane-details").children("p").text(b),
        $.post(c, {objectId: objectId, project_name: d, project_description: b}, function (a) {
            1 == a.succeed && close_edit_project_div()
        }))
}